gcc -o hello -O2 hello.c
-o参数指定生成的可执行程序的文件名,-O2是优化级别,该命令会编译生成hello可执行程序。
ldd hello
ldd命令查看链接了那些动态库
nm hello
查看程序里面有那些符号
gcc -o libhello.so -O2 -fPIC -shared hello.c
-fPIC参数声明链接库的代码段是可以共享的,-shared参数声明编译为共享库。编译后的共享库的名字叫libhello.so,这是Linux共享库的一个命名惯例:后缀使用so,而名称使用libxxxx格式
gcc -o main -O2 -L. -lhello main.c
-L参数指定到那个附加路径下去寻找共享库,这里我们指定在当前目录下寻找。-l参数指定链接到那个共享库上面,我们传的参数hello,那么gcc就会自动链接到libhello.so这个共享库上面
如果代码执行时找不到某个库,
我们可以把库所在目录加入/etc/ld.so.conf文件里面,然后执行ldconfig命令即可
如果只想库被特定程序使用,以免共享库之间发生版本冲突,可以在程序启动脚本里面设置LD_LIBRARY_PATH
示例:export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
如果在shell命令行里面临时执行,我们可以临时指定一下链接路径
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH