g++ 编译mysql动态库_g++ 编译动态链接库和静态链接库

本文介绍了如何使用g++在Linux环境下编译动态链接库libhello.so和静态链接库libhello.a。动态库编译涉及-m32参数,静态库编译包括编译源文件生成.o文件再用ar工具整合。同时,文章讲解了如何在运行时动态和静态加载链接库,并提到了其他加载库文件的方法,如修改/etc/ld.so.conf和使用LD_LIBRARY_PATH环境变量。
摘要由CSDN通过智能技术生成

现在我有hello1.cpp和hello2.cpp两个文件,现在我要生成动态链接库libhello.so和静态链接库libhello.a。以下为步骤:

1.生成动态链接库: g++ -m32 hello1.cpp hello2.cpp -fPIC -shared -o ../lib/linux32/libhello.so -m32为生成32位的动态链接库,-m64位生成64位的动态链接库。

2.生成静态链接库:

g++ -m32 hello1.cpp -c -o hello1.o  //编译hello1.cpp 生成中间文件hello1.o

g++ -m32 hello2.cpp -c -o hello2.o  //编译hello2.cpp 生成中间文件hello2.o

ar rcs libhello.a hello2.o hello1.o  //将hello1.o和hello2.o添加到静态链接库

3.除了生成库文件,还可以采用-I参数,引入.o文件。 g++ -m32 hello2.cpp -o hello2 -I./ hello1.o

4.运行时自动加载动态链接库:  g++ -m32 hello.cpp -o hello -L/lib/linux32/ -lname -Wl,--rpath=/lib/linux32/  其中“-m32”参数是编译32位的可执行文件;

“-L”是需要链接的动态链接库的目录路径; “-l”参数是需要链接的链接库名称(例如库文件位libname.so,那么-l后面的参数是name);

"-Wl,--rpath="参数为运行时链接动态链接库目录的地址;

5. 运行时自动加载静态链接库:  g++ -m32 hello2.cpp -o hello2 -I/lib/linux32/  lhello -Wl,--rpath=/lib/linux32/

6.如果不想在运行时链接库文件,那么可以采用export方式,例如:  export LD_LIBRARY_PATH=/lib/linux32/  除了上面两种方法,还有其他的方法加载库文件:

1)在配置文件/etc/ld.so.conf中指定的动态库搜索路径。         打开/etc/ld.so.conf 文件并将你存放.h文件的路径加入。        Ldconfig (是将你修改的配置文件保存导入)

2) /lib          可以将动态库放入/lib中

3) /usr/lib        可以将动态库放入/usr/lib中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值