我一直在尝试确定我的 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