代码参见:
1、g++/gcc
- 编译示例(链接库lib目录下的库libenglish_spelling_correct.a):
g++ main_test.cpp -L./lib -lenglish_spelling_correct -I./inc -o main
- 问题:运行时,动态库找不到的解决办法有哪些?
#运行时动态库路径设置
https://www.cnblogs.com/homejim/p/8004883.html
#1 动态库放在如下路径
/lib或/lib64
/usr/lib或/usr/lib64
#2 设置链接路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:《your_lib_path》
#3 修改配置文件/etc/ld.so.conf
/etc/ld.so.cache中缓存了动态库路径
#4 链接时加如下命令
-Wl,-rpath=《my_thirdparty_lib_path》
#5 软连接
* 防止循环依赖
- 问题:编译时,发生循环依赖或者明明有依赖找不到怎么办?
-Wl,–start-group \
… -laaa … \
-Wl,–end-group
#或者
将新库放在所有依赖库前面
2、makefile
3、cmake
- 运行时动态库找不到
LINK_DIRECTORIES("/动态库绝对路径/")
或简写:
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/lib)
- 指定g++版本
make CXX=/usr/local/gcc-5.4.0/bin/g++