您的位置:首页 > 运维架构 > Linux

Linux下的开发经验总结

2017-10-24 18:11 246 查看

常见问题解决:

(1)cannot open shared object file

错误提示
XXX: error while loading shared libraries: xxx.so.X:cannot open shared object file: No such file or directory


情况分析:

(1)未添加相关库文件目录或更新库文件的搜索缓存

解决步骤:

1.检查库文件目录是否在/etc/ld.so.conf或者include的conf文件中

2.运行sudo /sbin/ldconfig更新相关配置

(2)未安装相关库文件

解决步骤:

1.在对应的软件安装时,configure加入参数–enable-shared

(2)bash: /usr/bin/curl: No such file or directory

情况分析:make install程序后,键入命令提示上述错误,用sudo运行则可以(也有普通用户和超级用户运行后发现程序版本不一致等情况,/usr/bin和/local/bin均有该程序),用locate寻找程序后发现,/usr/local/bin后均有该程序,普通用户运行
echo $PATH
后确定有/usr/local/bin,直觉觉得是未更新bash配置。

解决步骤:

1.
source ~/.bashrc


(3)Undefined reference to symbol

1.检查是否安装相关库文件

2.安装后需要sudo ldconfig更新库文件缓存

3.如果曾经安装过其他版本,可能是版本冲突所致,用locate找到相关文件(主要是库文件)并删除后重新安装

Tips:

1.不确定运行的是/usr/bin和/usr/local/bin时,可以用which命令,或者看PATH的顺序

Linux下编写C和CPP的注意事项

近日,正在linux下进行一些c和cpp的程序开发,有一些关于库的链接问题,记下以备用。

目前有使用GCC G++还有QTcreator来进行编译程序。QT中的pro文件,其中INCLUDEPATH +=后面填写要引用的头文件的路径(GCC库文件目录下的不必填写),LIBS +=后填写要链接的库的地址,其后也可以填写gcc的-l参数,此处展开讲解一下-l参数,以-lxxx为例,当填写-lxxx时,gcc会在库文件路径中去搜寻以libxxx.so为名的动态链接库库文件,而动态链接库库文件路径是由/etc/ld.so.conf.d目录下的.conf文件来决定的,可以在此目录下任意增加.conf文件来增加库文件路径。

CMAKE的注意事项

make报错的相关解决方案

(1)can not be used when making a shared object

错误提示
relocation R_X86_64_32 against  '.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC


解决步骤:

1.查看CMakeLists.txt中CMAKE_CXX_FLAGS的参数中是否含有-fPIC

2.重新安装报错的库,安装时,如果是configure,则添上–enable-shared参数,如果是cmake则在CMakeLists.txt的CMAKE_CXX_FLAGS的参数中添加-fPIC,即

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: