gcc "$fn" -o $dp/lib$fname.so -shared -fPIC
# -shared 生成动态连接库
# -fpic/ -fPIC 令gcc编译器生成动态连接库时,表示徊目标文件中函数、类等功能模块的地址使用相对地址,而非绝对地址。
#
# 动态连接库
# echo "gcc $testPath/test.c -o $rootPath/bin/test -ltrace -L $rootPath/bin"
gcc $testPath/test.c -o $rootPath/bin/test -ltrace -L $rootPath/bin -Wl,-rpath=$rootPath/bin/
# -ltrace 将会搜索libfoo.so这个库
# -l:trace.so 将会搜索foo.so这个库
# -L 指定编译时动态库位置,生成后的程序运行时还是会出现加载不到动态库
# 解决方法1. 在生成时加入-Wl,rpath参数
# 解决方法2. 将生成后的动态库文件复制到/etc/ld.so.conf文件中或/etc/ld.so.conf.d/*.conf中
# 然后运行ldconfig进行更新
# 编译c++ 动态库
# function compileCadd(){
# echo $1;
# }
# for f in $testPath/*.cpp; do
# compileCadd "$f" "$rootPath/bin";
# done
#g++ $testPath/test.c -o $rootPath/bin/test -ltrace -L $rootPath/bin -Wl,-rpath=$rootPath/bin/
# 查看应用连接库
# ldd $rootPath/bin/test
# 临时添加 lib 目录
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/xxx/xxx/xxx
$rootPath/bin/test
C/C++ 开发,生成动态连接库(Linux GCC) - 笔记1
最新推荐文章于 2024-07-17 06:10:07 发布