1-我们用gcc来创建共享库
gcc -fPIC -c hello.c -o hello.o
-fPIC 创建与地址无关的编译程序
gcc -shared -o libmyhello.so hello.o
2-测试动态库使用
gcc main.c -L. -lmyhello
可以正常编译通过,但是运行时报错./a.out: error while loading shared libraries: libmyadd.so: cannot open shared object file: No such file or directory
原因:当加载动态库时,系统会默认从/lib或/usr/lib路径下查找库文件
解决方法(有三种):
(1)把库拷贝到/usr/lib和/lib目录下。(此方法编译时不需要指定库的路径)
(2)在LD_LIBRARY_PATH环境变量中加上库所在路径。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
(终端关闭,环境变量就没在了)
(3) 添加/etc/ld.so.conf.d/*.conf文件。把库所在的路径加到文件末尾,并执行ldconfig刷新
sudo vi xx.conf

文章讲述了如何使用gcc创建共享库,包括`-fPIC`和`-shared`选项的使用。在测试动态库时遇到运行错误,因为系统默认在特定路径下查找库文件。解决方法包括将库文件复制到系统库路径,设置`LD_LIBRARY_PATH`环境变量,或编辑`/etc/ld.so.conf.d/*.conf`并运行`ldconfig`。
1831

被折叠的 条评论
为什么被折叠?



