您的位置:首页 > 运维架构

How to compile OpenJPEG in MinGW?

2009-04-24 21:19 330 查看
How to compile OpenJPEG in
MinGW?

The “How to
compile and install external libs of FFMPEG?” has described the simple way
to compile OpenJPEG for FFMPEG. However, if readers need generate static and
dynamical libraries at the same time, how to handle this requirement?
As the mentioned before,
referring to “How to
generate DLL files by GCC in the MinGW?” and “How to
use GCC to build DLL by DEF file in MinGW?”, we can do it by DEF file to
build DLL library for the usage of Windows.
To ease to re-use by readers, I
have modified the Makefile encapsulated by openjpeg_v1_3.tar.gz.
Please refer to the following content, and readers can replace the original one
by making full use of it.
# Linux makefile for OpenJPEG

VER_MAJOR = 2
VER_MINOR = 1.3.0

SRCS = ./libopenjpeg/bio.c
./libopenjpeg/cio.c ./libopenjpeg/dwt.c ./libopenjpeg/event.c
./libopenjpeg/image.c ./libopenjpeg/j2k.c ./libopenjpeg/j2k_lib.c
./libopenjpeg/jp2.c ./libopenjpeg/jpt.c ./libopenjpeg/mct.c ./libopenjpeg/mqc.c
./libopenjpeg/openjpeg.c ./libopenjpeg/pi.c ./libopenjpeg/raw.c
./libopenjpeg/t1.c ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c
INCLS = ./libopenjpeg/bio.h
./libopenjpeg/cio.h ./libopenjpeg/dwt.h ./libopenjpeg/event.h
./libopenjpeg/fix.h ./libopenjpeg/image.h ./libopenjpeg/int.h
./libopenjpeg/j2k.h ./libopenjpeg/j2k_lib.h ./libopenjpeg/jp2.h
./libopenjpeg/jpt.h ./libopenjpeg/mct.h ./libopenjpeg/mqc.h
./libopenjpeg/openjpeg.h ./libopenjpeg/pi.h ./libopenjpeg/raw.h
./libopenjpeg/t1.h ./libopenjpeg/t2.h ./libopenjpeg/tcd.h ./libopenjpeg/tgt.h
./libopenjpeg/opj_malloc.h ./libopenjpeg/opj_includes.h
INCLUDE = -Ilibopenjpeg

# General configuration variables:
CC = gcc
AR = ar

PREFIX = /mingw
INSTALL_LIBDIR = $(PREFIX)/lib
INSTALL_INCLUDE = $(PREFIX)/include

# Converts cr/lf to just lf
DOS2UNIX = dos2unix

COMPILERFLAGS = -Wall -O3 -ffast-math
-std=c99 -fPIC
LIBRARIES = -lstdc++

MODULES = $(SRCS:.c=.o)
CFLAGS = $(COMPILERFLAGS) $(INCLUDE)

TARGET
= openjpeg
STATICLIB = lib$(TARGET).a
SHAREDLIB =
lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dll
LIBNAME =
lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dll.a

default: all

all: OpenJPEG

dist: OpenJPEG
install
-d dist
install
-m 644 $(STATICLIB) dist
install
-m 755 $(SHAREDLIB) dist
install -m 644 $(SHAREDLIB).lib dist
ln
-sf $(SHAREDLIB) dist/$(LIBNAME)
install
libopenjpeg/openjpeg.h dist

dos2unix:
@$(DOS2UNIX)
$(SRCS) $(INCLS)

OpenJPEG: $(STATICLIB) $(SHAREDLIB)

.c.o:
$(CC)
$(CFLAGS) -c $< -o $@

$(STATICLIB): $(MODULES)
$(AR)
r $@ $(MODULES)

$(SHAREDLIB): $(MODULES)
$(CC) -s -shared -Wl,--output-def,$(SHAREDLIB).def
-Wl,--out-implib,$(LIBNAME) -Wl,-Bsymbolic -o $@ $(MODULES) $(LIBRARIES)
lib.exe /machine:i386 /def:$(SHAREDLIB).def
/out:$(SHAREDLIB).lib

install: OpenJPEG
install -d '$(DESTDIR)$(INSTALL_LIBDIR)'
'$(DESTDIR)$(INSTALL_INCLUDE)'
install -m 644 $(STATICLIB) '$(DESTDIR)$(INSTALL_LIBDIR)'
ranlib '$(DESTDIR)$(INSTALL_LIBDIR)/$(STATICLIB)'
install -m 755 $(SHAREDLIB) '$(DESTDIR)$(INSTALL_LIBDIR)'
ln -sf $(SHAREDLIB) '$(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)'
install -m 644 libopenjpeg/openjpeg.h
'$(DESTDIR)$(INSTALL_INCLUDE)'

clean:
rm
-rf core dist/ u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)

osx:
make
-f Makefile.osx

osxinstall:
make
-f Makefile.osx install

osxclean:
make
-f Makefile.osx clean
Summarization
1. To build correctly, please use the below
format.
$ make CFLAGS="-DWIN32 -DOPJ_STATIC
$CFLAGS"
WIN32 and OPJ_STATIC are MACROs, and denote
that it is WIN32 and static format.
2. Please can use dist tag
to store them in your locate folder after finishing compiling source codes..
$ make dist
3. The original Makefile
has not provided uninstall tag, and readers can add it in
the light of installing configuration.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: