无法使可执行文件可移植
Posted
技术标签:
【中文标题】无法使可执行文件可移植【英文标题】:Can't make executable portable 【发布时间】:2016-06-03 15:50:41 【问题描述】:我用这个库做了一个小 C++ 程序:http://libtins.github.io
我编译:g++ -o arp arp.cpp -ltins
它运行良好(Ubuntu 14.04 64 位),但是如果我将可执行文件发送给朋友,他在运行时会收到此错误:
error while loading shared libraries: libtins.so.3.4: cannot open shared object file: No such file or directory
我查看了***,发现了一些关于静态链接和动态链接的内容,还尝试了一些g++参数但没有成功。
是否有可能创建一个“包含”共享对象本身的二进制文件?
谢谢
【问题讨论】:
【参考方案1】:您可以使用-static
静态链接库。
g++ -o arp arp.cc -ltins -static
要静态构建 libtin,您可以参考其README 中的以下部分:
静态/共享构建
请注意,默认情况下,仅编译共享对象。如果你愿意 喜欢生成静态库文件,运行:
cmake ../ -DLIBTINS_BUILD_SHARED=0
【讨论】:
给我这个错误(翻译):/usr/bin/ld: 无法找到 -ltins @Matteo 您可能必须将此库重新编译为静态库。 我该怎么做? @Matteo 已编辑以包含关于静态构建的 README 部分 谢谢,它运行良好,但二进制文件大了 200 倍以上是关于无法使可执行文件可移植的主要内容,如果未能解决你的问题,请参考以下文章