gcc或g++使用的静态库存储在哪里,它们是如何识别的?

gcc或g++使用的静态库存储在哪里,它们是如何识别的?

我一直在尝试确定我的 Ubuntu (linux) 系统是否有静态库。他们什么时候会被找到,什么后缀可以识别他们?

答案1

在像 Ubuntu 这样的 debian 衍生系统上,系统自带的静态库(通过apt/安装dpkg,而不是手动安装)通常/usr/lib/<target-triplet>/会带有后缀.a.

例如,在我的 x86-64 debian 系统上:

$ ls /usr/lib/x86_64-linux-gnu/*.a
/usr/lib/x86_64-linux-gnu/libBrokenLocale.a
/usr/lib/x86_64-linux-gnu/libFS.a
/usr/lib/x86_64-linux-gnu/libGLU.a
/usr/lib/x86_64-linux-gnu/libICE.a
/usr/lib/x86_64-linux-gnu/libImlib2.a
...

apt-get install <package>-dev除了动态*.so库之外,通常还会安装此类库。

尽管如此,仍然有一些软件包直接安装其库/usr/lib,例如。libgraphicsmagick1-dev

编译器喜欢gcc并且clang还会libstdc++在 下安装一些“内部”库( 等)/usr/lib/<compiler-name>/...,例如:

/usr/lib/gcc/x86_64-linux-gnu/6.3.0/libgcc.a

其他发行版可能遵循不同的约定;例如,在 rhel/centos 中,所有开发库都位于/usr/lib64/或下,/usr/lib32/并且它们由.编译文件总是会告诉您编译器到底在哪里寻找库,无论是静态的还是动态的。<package>-devel-*gcc -v

相关内容