【问题标题】:How To Convert An Object File To Executable File (C Object File) Using Linker如何使用链接器将目标文件转换为可执行文件(C 目标文件)
【发布时间】:2016-10-22 05:06:10
【问题描述】:

所以我想将 A .c 转换为 .exe 文件。

我知道的直接命令是 gcc -o foo foo.c我不想这样

但后来我想一步一步做,就像我想将 .c 转换为 .S 使用 cc 编译器,然后将 .S 转换为 .o 使用汇编器,然后 .o 到 .exe 使用链接器。

所以我知道如何将 .c 转换为 .S 到 .o 但是我不知道链接器命令

我只知道它是这样的: ld -lc -o foo -ld-linux-x86-64.so.2 foo.o -e main(不确定,我缺少一些东西,所以请帮助我)

PS:我正在使用Linux编译(Ubuntu Flavor)

【问题讨论】:

  • 组装步骤是不必要的,因为您在实践中不太可能这样做。其余步骤通常使用Makefile 完成。因此,我建议您熟悉如何使用makeMakefiles,以及如何在各种情况下调整典型配方。它不仅可以帮助您了解这些步骤在实践中是如何发生的(因为make 显示了它默认运行的每个命令),而且您很快就会发现编写Makefiles 可以更轻松地维护项目,并且检查其他项目的Makefiles 信息量很大。

标签: c linux gcc compilation linker


【解决方案1】:

请记住,链接器命令将非常特定于操作系统、发行版和平台。你可以通过让它与详细输出链接来查看 GCC 的作用:

gcc -v -o foo foo.o

这是获取您需要调用的命令的最可靠和最快的方法。这将包括系统库搜索目录、系统库和其他通常不那么直接的选项。

出于上述所有原因,我强烈建议不要直接调用 ld,除非您有一个非常具体的用例需要这样做。

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2010-12-23
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多