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++

运行截图如下:

Logo

更多推荐