当前位置: 首页 > 知识库问答 >
问题:

gcc make-正确整理生成对象文件的顺序

高修筠
2023-03-14

每次当我试图从他们的源代码中编译一些没有提供makefile的应用程序时(他们没有提供makefile的原因可能是它对普通用户来说是开箱即用的),我想把所有的文件都放在目标文件中然后将所有目标文件合并为二进制文件。

例如:

gcc *.c *.f90 *.f *.inc -o     % first command
gcc *.o -o a.out               % second command

我发现的问题通常是,通过这种方法,必须多次运行第一个命令,以确保所有文件都已正确转换为对象文件。以前的调度失败可能是由依赖项引起的,即某些对象文件只能在创建其他对象文件后才能创建。

我想知道我们是否可以正确设置创建这些对象文件的顺序,以便通过运行第一个命令一次就可以创建所有的对象文件?当前示例的顺序为*。c*。f90*。f*。我通常使用的另一种方法是(1)ls

我意识到基于windows的virtual studio在这方面非常聪明,因为用户不需要整理编译序列。这可能就是没有提供makefile的原因。

共有1个答案

苏波涛
2023-03-14

制作手册演示了如何使用$(patsubst%. c,%. o,$(通配符*. c))根据. c源获取. o文件列表。您可以使用Foreach对多个后缀执行相同的操作。

$(foreach s,c f90 f inc,$(patsubst %.$s,%.o,$(wildcard *.$s)))

现在需要做的就是告诉make.out的依赖项是什么(对象文件),制作a.out的方法(我只是复制了下面的内置方法),以及如何编译。f90和。inc文件,因为make不知道这些(它已经知道如何编译.c和.f文件)。

你需要给出你自己的烹饪方法。公司,我又一次复制了它的内置配方。F文件。f90,因此可能需要调整。

a.out: $(foreach s,c f90 f inc,$(patsubst %.$s,%.o,$(wildcard *.$s)))
    $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.f90
    $(COMPILE.F) $(OUTPUT_OPTION) $<
%.o: %.inc
    insert .inc compile recipe here
 类似资料:
  • 我测试了简单的scala程序并用calac编译了它 如果我运行java-cp。;scala图书馆。“jar测试”,它工作正常。是的,scala图书馆。jar文件在同一个目录中。 这是我的清单文件manifest.txt 我用罐子cfm Test.jarmanifest.txt 如果我解压生成的测试。jar文件和打开清单文件,它不包含主类字段。因此,它不能与java-jar测试一起运行。罐子 我可以

  • 我不能使用vqmod。当ı单击管理面板中的vqmod时,它会显示 VQMod似乎没有正确生成vqcache文件 我还使用与汽车相关的产品xml。是这件事造成的?我不知道。 还有一些产品页面说 注意:未定义索引:product_info in/home/elmaicom/domains/elmacimarketi。com/public\u html/vqmod/vqcache/vq2-catalog

  • 我已经使用OpenSSL创建了一个自签名证书链。证书的扩展名为.crt。我试图从那个.crt文件创建一个.keystore文件。 如何成功生成密钥存储库文件?为什么将该文件转换为.p12有效?

  • 问题内容: 以上失败,并出现AttributeError异常。我了解Python在调用时不保证 “全局变量”(在这种情况下是否存在成员数据)的存在。如果是这种情况,并且这是导致异常的原因,那么如何确保对象正确销毁? 问题答案: 我建议使用Python的语句来管理需要清理的资源。使用显式语句的问题在于,你必须担心人们会忘记完全调用它,或者忘记将其放在块中以防止发生异常时发生资源泄漏。 要使用该语句,

  • 我想序列化Internet上的一个复杂Java对象。第一次,我使用Google Gson来序列化这个类。Gson提供了一种将对象序列化为JSON字符串并通过toJson和fromJson从JSON字符串反序列化到对象的简单方法。然而,JSON字符串并不是很紧凑,在序列化字节[]数组时会带来很大的开销。 我正在阅读Google协议缓冲区。根据教程,用户必须手动为每条消息编写. proto文件。协议缓

  • 最近,我发现自己不得不在没有互联网连接的机器上安装python项目的所有依赖项(20)。我用了获取所有文件并手动传输。直到现在,我才完全理解pip的天才,以及它是如何独立计算依赖关系树并以正确的顺序安装每个包的。例如,包依赖于包,而包本身依赖于包等等。 我想要一种使用命令控制台或python本身在机器上自动安装所有这些依赖项的方法,因此我转向StackOverflow并找到了以下解决方案:如何在c