Linux学习笔记-动态库的使用
example.hlibexample.so如下图所属:现在写一个.cpp源码如下:main.cpp#include "example.h"int main(){print(10,30);return 0;}文件路径如下:编译:g++ ‐c main.cpp ‐o main.o 链接:g++ main.o ‐o helloworld ‐...
example.h
libexample.so
如下图所属:
现在写一个.cpp
源码如下:
main.cpp
#include "example.h"
int main(){
print(10,30);
return 0;
}
文件路径如下:
编译:
g++ ‐c main.cpp ‐o main.o
链接:
g++ main.o ‐o helloworld ‐L. ‐lexample
链接选项:
‐lexample 使用libexample.so这个库文件
‐L. 指定库文件的位置
运行截图如下:
./helloworld
通常会提示无法运行程序:
libexample.so: ...: No such file or directo
操作系统默认从标准位置寻找相应的库
/lib /usr/lib /usr/local/lib
如果没有找到依赖的库文件,则从
LD_LIBRARY_PATH环境变量里寻找。
先使用export命令设置环境变量, 然后再运行
程序。
export LD_LIBRARY_PATH=.
./helloworld
如下图:
这样就阔以运行了,运行截图如下:
拿到一个可执行程序,怎么知道它依赖哪些库呢?
readelf ‐d helloworld
如下图:
关键是看他的NEEDED属性:
如:
libexample.so
libstc++.so
libm.so
libgcc_s.so
libc.so
检索代码!
ls /usr/lib | grep libstdc++
运行截图如下:
更多推荐
所有评论(0)