gcc 编译器 lib 文件未找到错误

Posted

技术标签:

【中文标题】gcc 编译器 lib 文件未找到错误【英文标题】:gcc compiler lib file not found error 【发布时间】:2014-03-26 09:13:30 【问题描述】:

请帮助我了解 gcc 编译器命令

gcc -c -ID:\pjtName\lib -c -fprofile-arcs -ftest-coverage D:\pjtName\source\tmp.ada

我正在尝试用覆盖率编译 tmp.ada。 adb 和 ads 文件位于 D:\pjtName\source 文件夹中。我的 lib 文件位于 D:\pjtName\lib 文件夹中。

问题是 gcc 没有在 D:\pjtName\lib 文件夹中找到 tmp.ads 文件和库文件。它显示文件未找到错误

在这个命令之后,我需要为 tmp.ada 文件运行 gcov 命令

【问题讨论】:

【参考方案1】:

GNAT 的构建过程很复杂。 gcc 实在是太低级了,不好用;而是使用 gnatmake 和 GNAT 项目文件。

你已经标记了 gnat-gps,所以我假设你实际上有 GPS。如果是这样,您最好的选择是在打开 GPS 时选择使用向导创建新项目,然后从那里继续。如果遇到困难,请使用 GPS 随附的帮助或返回此处。

要使用 GPS 获取覆盖信息,请转到 Edit / Edit Project Properties

Ada选项卡中,选择代码覆盖率Instrument arcs,其中包括-ftest-coverage-fprofile-arcs; 在Ada Linker 选项卡中,选择代码覆盖率,其中包括-fprofile-generate(否则会出现链接时间错误)。

对了,你提到了一个文件tmp.ada;对于规格,最好坚持使用.ads,对于车身,最好坚持使用.adb。 GNAT 会尽力而为,但如果您的其他代码包含with Tmp;,GNAT 将寻找tmp.ads。你可以alter this behaviour,但除非你有其他原因,否则何必打扰!

【讨论】:

感谢 Simon Wright,将 gprbuild 工具与我的“pjt.gpr”文件一起使用时,GPS 工具显示“无法创建 gcno 文件”错误。即使我的 gpr 文件将 -fprofile-arcs -ftest-coverage 作为默认开关,它也不会生成覆盖文件。所以,我选择了 gcc 工具来为我的 ada 源文件创建 .gcda 和 .gcno 文件。 添加了一些关于获取 GPS 覆盖的内容。 我不明白为什么会说“无法生成gcno文件”!对我来说,没有-fprofile-generate,程序无法链接。【参考方案2】:

如上所述,不要使用 gcc。

我通常使用gnat compile filename.adb,然后使用gnat bind filename.ali,然后使用gnat link filename.ali -Lexternaldirectory -lexternallib

【讨论】:

以上是关于gcc 编译器 lib 文件未找到错误的主要内容,如果未能解决你的问题,请参考以下文章

GCC 在 lib 中找不到函数

gcc 编译器错误消息路径取消父级

gcc -fPIC编译选项分析

Keil5.15使用GCC编译器链接.a库文件

编译时找不到动态库

Redhat Linux - 未找到 SO 文件