当前位置: 首页 > Linux

Linux编程相关命令

时间:2023-04-06 21:51:34 Linux

一个接一个添加,未完待续...一、编译环境1、查看当前编译根目录(尤其是交叉编译)运行命令cpp-print-sysroot执行效果/2、查看可执行程序的默认搜索路径运行命令echo$PATH执行效果/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin3.查看当前默认搜索路径头文件运行命令cpp-v执行效果使用内置specs.COLLECT_GCC=cppTarget:x86_64-linux-gnuThreadmodel:posixgccversion6.3.020170516(Debian6.3.0-18+deb9u1)COLLECT_GCC_OPTIONS='-E''-v''-mtune=generic''-march=x86-64'...#include"..."搜索从这里开始:#include<...>搜索从这里开始:/usr/lib/gcc/x86_64-linux-gnu/6/include/usr/local/include/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/usr/include/x86_64-linux-gnu/usr/include搜索列表结束.4.查看共享库程序的默认搜索路径背景知识#查看LD_DEBUG选项exportLD_DEBUG=helpls(任何命令都可以)#设置查看libs选项exportLD_DEBUG=libs#取消设置LD_DEBUGexportLD_DEBUG=操作命令#libs或allexportLD_DEBUG=libs#执行可执行程序(找不到libMath.so)./AppProject执行效果findlibrary=libMath.so[0];searchingsearchcache=/etc/ld.so.cachetryingfile=/usr/local/lib/libMath.sosearch路径=/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux-gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu:/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/lib(系统搜索路径)尝试文件=/lib/x86_64-linux-gnu/tls/x86_64/libMath.so尝试文件=/lib/x86_64-linux-gnu/tls/libMath.so尝试文件=/lib/x86_64-linux-gnu/x86_64/libMath.so尝试文件=/lib/x86_64-linux-gnu/libMath.so尝试文件=/usr/lib/x86_64-linux-gnu/tls/x86_64/libMath.so尝试文件=/usr/lib/x86_64-linux-gnu/tls/libMath.so尝试文件=/usr/lib/x86_64-linux-gnu/x86_64/libMath.so尝试文件=/usr/lib/x86_64-linux-gnu/libMath.so尝试文件=/lib/tls/x86_64/libMath.so尝试文件=/lib/tls/libMath.so尝试文件=/lib/x86_64/libMath.so尝试文件=/lib/libMath.sot尝试文件=/usr/lib/tls/x86_64/libMath.so尝试文件=/usr/lib/tls/libMath.so尝试文件=/usr/lib/x86_64/libMath.so尝试文件=/usr/lib/libMath.so./AppProject:errorwhileloadingsharedlibraries:libMath.so:cannotopensharedobjectfile:Nosuchfileordirectory2.文件分析1.查看文件交叉编译信息运行命令readelf-hxxx执行效果3.动态library分析1.查看依赖动态库操作命令lddxxx执行效果2.查看缺失动态库操作命令lddxxx执行效果3.查看rpath操作命令readelf-dxxx执行效果4.修改rpath操作命令patchelf--set-rpathnew_pathxxx执行效果5.删除rpath操作命令patchelf--remove-rpathfilename执行效果6.添加rpath操作命令patchelf--set-rpath./..libfilename执行效果4.参考链接可执行文件在运行时在哪里寻找共享对象?共享库