默认情况下,gcc是否将程序与静态或动态库链接?

San*_*dro 7 c c++ linux linker gcc

我的Linux系统上安装了相同库的静态和动态版本:

/usr/lib/libsample.a
/usr/lib/libsample.so
Run Code Online (Sandbox Code Playgroud)

如果我设置参数-lsample,这些库中的哪一个将使用gcc?

gcc xxx.c -lsample
Run Code Online (Sandbox Code Playgroud)

如何强制gcc使用库的静态或动态版本

Tai*_*iki 6

http://www.rapidtables.com/code/linux/gcc/gcc-l.htm

您无需执行任何操作,默认情况下为dynamic.

但是,它必须在二进制文件中添加一些内容,以便在运行时帮助它正确使用动态库.

  • 一种方法是直接指定`.a`的路径(没有任何`-llibname` - 只是文件的路径,就像普通的`.o`).其他方式是`-Wl,-static -llibname -Wl,-Bdynamic`(第一个命令设置链接器使用静态,第三个命令恢复为动态). (2认同)