【问题标题】: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

我查看了stackoverflow,发现了一些关于静态链接和动态链接的内容,还尝试了一些g++参数但没有成功。

是否有可能创建一个“包含”共享对象本身的二进制文件?

谢谢

【问题讨论】:

    标签: c++ linker static-linking compiler-flags


    【解决方案1】:

    您可以使用-static 静态链接库。

    g++ -o arp arp.cc -ltins -static
    

    要静态构建 libtin,您可以参考其README 中的以下部分:

    静态/共享构建

    请注意,默认情况下,仅编译共享对象。如果你愿意 喜欢生成静态库文件,运行:

    cmake ../ -DLIBTINS_BUILD_SHARED=0

    【讨论】:

    • 给我这个错误(翻译):/usr/bin/ld: 无法找到 -ltins
    • @Matteo 您可能必须将此库重新编译为静态库。
    • 我该怎么做?
    • @Matteo 已编辑以包含关于静态构建的 README 部分
    • 谢谢,它运行良好,但二进制文件大了 200 倍
    猜你喜欢
    • 2014-09-19
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多