报错:
或者报错:
file format not recognized; treating as linker script
分析:
应该是动态库链接的库位置不对,默认在目录usr/lib/ 下查找动态库。
方式一 用ln -s建立创建软连接,确保/usr/lib下存在库。
ln -s /绝对路径/源 /绝对路径/目的
方式二 编译时使用-rpath 或者-rpath-link,例如如下gcc编译时设置
mips64el-redhat-linux-gcc -o test *.c -Wall -L./lib/mips64le/ -lpthread -lm -Wl,-rpath=/usr/local/gcc-4.8.3-d197-n64-loongson/usr/mips64el-redhat-linux/lib64/
扩展:<忘记原文在哪里了,记录核心如下>
(1)-rpath和-rpath-link都可以在链接时指定库的路径;
(2)运行可执行文件时,-rpath-link指定的路径不再有效(链接器没有将库的路径包含进可执行文件中),
而-rpath指定的路径还有效(因为链接器已经将库的路径包含在可执行文件中);
(3)-L指定的是链接时的库路径,生成的可执行文件在运行时库的路径仍由LD_LIBRARY_PATH环境变量指定;
(4)不管采用何种选项链接,当提示找不到动态库时均可通过设置LD_LIBRARY_PATH解决。
如果链接时没使用 '-rpath' ,那么如果定义了 LD_RUN_PATH 就会使用该值作为 rpath
挂载命令的顺序
mount --bind A B
A 挂载给 B