【问题标题】:MinGW ld making DLLs into a very short fileMinGW ld 将 DLL 制作成一个非常短的文件
【发布时间】:2015-06-24 13:11:16
【问题描述】:

我想用 MinGW ld 将一些 .a 文件链接到 .dll 文件中,但效果不好: .a 文件很大,比如 0.98 MB,但是当我这样做时:

ld liba.a libb.a libc.a -shared -o final.dll

但是效果不好!我得到了一个只有 5 kb 的文件 final.dll。 我该怎么办?

【问题讨论】:

    标签: windows dll mingw .a


    【解决方案1】:

    不能像这样链接库:ld liba.a libb.a libc.a -shared -o final.dll; ld 永远不会从其中任何一个中选择任何对象模块,因为它永远不会有任何未解决的引用要满足。为了实现您的目标,可能的解决方法是:

    mkdir dlltmp
    cd dlltmp
    ar x ../liba.a
    ar x ../libb.a
    ar x ../libc.a
    gcc -shared -o ../final.dll *.o
    

    并且,事后清理:

    cd ..
    rm -rf dlltmp
    

    请注意这里使用gcc 而不是ld;直接调用ld 几乎总是一个 的想法,(如果你将它用作ld -o ../final.dll *.o,而不是我在这里显示的gcc 命令,你的链接肯定会失败,因为未解决的参考)。另请注意,我假设您的 gccar 是 MinGW 工具,并且您有一个 unixy rm,(例如 MSYS 提供的);如果您的工具不是这些,那么您可能需要mingw32-gccmingw32-ar(或其他适合您的工具)以及一些替代命令来删除临时目录。

    【讨论】:

      猜你喜欢
      • 2015-09-05
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多