- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用没有共享依赖项的 GCC/G++ 构建静态程序。但我不知道该怎么做。
在 Netbeans IDE 中使用以下命令我可以使用共享依赖项进行构建,但是在某些操作系统中找不到这个库(我不想在新系统上安装)
-Wl,--dynamic-linker=/usr/lib/libexpat.so.1
最佳答案
要静态链接程序,您需要静态库,这是一个文件名以.a
结尾的库。
链接器,默认情况下,如果使用默认搜索路径(如您使用 /usr/lib
),将选择 .so
库版本 并将做一个动态链接,所以如果你想指定你想要一些静态库
,你需要指定它的完整路径名 ,而不是使用 -l
选项。所以,
gcc -o your_program mod_a.o mod_b.o ... /usr/lib/libexpat.a
优于
gcc -o your_program mod_a.o mod_b.o ... -lexpat
(后者将选择文件 /usr/lib/libexpat.so
,它应该是指向 /usr/lib/libexpat.so.1
的链接,通常是库的soname,也是/usr/lib/libexpat.so.1.xx.xx
)
在示例中,我试图通过编译器调用链接器,因为默认的 c 运行时和库在以这种方式调用时由编译器自动选择。如果您更喜欢直接调用链接器,过程不会改变,但是您必须自己添加C 运行时模块和标准c 库。
如果你想静态链接一切,那么你必须使用你将要使用的所有库的静态版本(它们通常安装在与动态库相同的目录中,所以你必须在命令行中指定所有的完整路径名)为了在永久开发系统中解决这个问题,您可以从另一个路径对它们进行符号链接(symbolic link),然后将该目录指定为必须静态的项目的搜索路径链接。
如果你总是希望一些库被静态链接,只需删除 .so
链接(不是 .so.X
和 .so.X .YY
链接,编译器不尝试)在/usr/lib
中,编译器默认选择.a
文件。当然,如果你想为每个库都制作这个,你可以删除所有的 .so
链接,但是你最终会得到比原始动态链接版本更大(大得多)的可执行文件。
关于linux - 如何静态链接 libexpat.so.1 与 GCC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43821258/
操作系统:Ubuntu 12.04 64 位(Precise) 机器:x86_64、Intel Centrino 2(2 核)、4 GB RAM 涉及的库:libudunits2.so.0.1.0、l
我想使用没有共享依赖项的 GCC/G++ 构建静态程序。但我不知道该怎么做。 在 Netbeans IDE 中使用以下命令我可以使用共享依赖项进行构建,但是在某些操作系统中找不到这个库(我不想在新系统
它以 httpd 开始,而不是在我的一台机器上启动: $ /usr/sbin/httpd -v /usr/sbin/httpd: error while loading shared librarie
我刚刚通过在 MSYS2/MINGW64 上编译源代码编译了一个交叉 gdb。但是当我运行 gdb 时它抛出一个错误并提示它无法启动因为它需要 libexpat-1.dll。 这就是我编译 gdb 所
我正在寻找如何通过 C libexpat 和 Linux 解析 XML 文件。我正在寻找解析不会将整个文件内容加载到内存中,我希望通过逐行读取 xml 文档来完成解析。 有没有人可以提出使用 expa
我在 Redhat 6.7 中从源代码安装 Apache 2.2.17,发现找不到 libexpat.so.0。但是我看到 libexpat.so.0 在/usr/lib64 中可用,并且/usr/l
尝试在 Sierra 10.12.6 中运行 uwsgi,出现以下错误: dyld: Library not loaded: @rpath/libexpat.1.dylib Referenced
我正在运行 ReviewBoard 2.0.15,在某些评论中我收到以下错误: Django Version: 1.6.11 Python Version: 2.6.6 Installed Appli
我有一个 Python 2.5 程序,代码在 https://www.dropbox.com/s/wh1sgpsd248x85m/PopGen.zip 当我执行此程序 (python -m gui.m
我是一名优秀的程序员,十分优秀!