首页QT › MINGW下动态库编译及使用

MINGW下动态库编译及使用

环境为MINGW

-o xxx       生成指定文件xxx
-c     只编译不链接
-Izinclude   添加头文件路径zinclude
-Lzlib       添加库路径zlib
-DZDEFINE    添加定义ZDEFINE
-lzlib       添加库libzlibdll.a
-shared      共享
-Wl,–output-def,zmath.def,–out-implib,libzmathdll.a  生成def文件,生成链接库
GCC 选项
-Wl,-rpath=/usr/local/lib 指定搜索路径,防止生成后找不到链接库
gcc -fPIC -shared -Wl,-soname,libto.so.1 -o libto.so.1.2 to.c
-Wl,-Bstatic -lmysqlclient -Wl,-Bdynamic -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
-Wl,-Bstatic -lmysqlclient 使用静态库
-Wl,-Bdynamic -lz 使用动态库
案例
gcc -shared -o testdll.dll testdll.c -Wl,–output-def,testdll.def,–out-implib,libtestdll.a
生成动态库testdll.dll,同时生成testdll.def,libtestdll.a
使用该dll
gcc -o testmain.exe testmain.c -L. -ltestdll
-L.指定lib目录为当前目录
-ltestdll  链接静态库libtestdll.a
-lxxx 指定目标为libxxx.a或libxxx.dll.a跟编译器有关,优先动态库
VC6使用
pexports testdll.dll > testdll.def
生成def文件
lib /machine:ix86 /def:testdll.def
生成testdll.lib   VC6可用
mingw仍可使用
gcc -o testmain.exe testmain.c testdll.lib

发表评论