g++ 编译动态链接库和静态链接库
2014-03-25 19:20
225 查看
现在我有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添加到静态链接库
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中
相关文章推荐
- g++ 编译动态链接库和静态链接库
- g++ 编译动态链接库和静态链接库
- G++ 编译使用动态链接库和静态链接库
- g++ 编译动态链接库和静态链接库
- Android NDK编译静态链接库及动态链接库(librtmp编译小白填坑)
- GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- GCC 编译使用动态链接库和静态链接库
- GCC 编译使用动态链接库和静态链接库
- GCC 编译使用动态链接库和静态链接库的方法
- Makefile 编译动态链接库和静态链接库
- GCC 编译使用动态链接库和静态链接库的方法
- [转]用g++编译动态链接库
- GCC 编译使用动态链接库和静态链接库
- GCC 编译使用动态链接库和静态链接库
- GCC 编译使用动态链接库和静态链接库
- 静态编译,动态编译,静态链接库,动态链接库
- GCC 编译使用动态链接库和静态链接库
- [转载]GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结
- g++编译动态链接库