gcc编译时 链接动态库 和静态库
时间: 2023-08-13 13:33:52 浏览: 138
gcc编译时要链接动态库和静态库,需要使用-l参数指定库的名称,-L参数指定库文件的路径。具体步骤如下:
1. 链接动态库:
使用-l参数指定动态库的名称,例如:
```
gcc -o myprog myprog.c -ldl
```
这条命令将myprog.c编译成可执行文件myprog,并链接动态库libdl.so。
2. 链接静态库:
使用-l参数指定静态库的名称,例如:
```
gcc -o myprog myprog.c -lm
```
这条命令将myprog.c编译成可执行文件myprog,并链接静态库libm.a。
3. 指定库文件路径:
如果库文件不在默认的路径中,可以使用-L参数指定库文件的路径,例如:
```
gcc -o myprog myprog.c -L/usr/lib -ldl
```
这条命令将myprog.c编译成可执行文件myprog,并链接动态库libdl.so,库文件在/usr/lib目录下。
注意:在使用-l参数指定库的名称时,不需要加上lib前缀和.so或.a后缀。
相关问题
gcc编译usrtest usrtest.c 使用静态库libnsm.a
可以使用以下命令编译usrtest.c并链接静态库libnsm.a:
```
gcc -o usrtest usrtest.c -L/path/to/lib -lnsm
```
其中,`-L/path/to/lib`指定libnsm.a所在的目录,`-lnsm`指定要链接的静态库名称(不需要加前缀"lib"和后缀".a")。如果libnsm.a在当前目录下,可以将`-L/path/to/lib`省略掉。
如果usrtest.c中用到了其他库,比如动态库libc.so,也可以将其链接到可执行文件中,例如:
```
gcc -o usrtest usrtest.c -L/path/to/lib -lnsm -lc
```
这条命令将同时链接静态库libnsm.a和动态库libc.so。
阅读全文