1

我正在尝试使用 编译.adb文件gnatmake,但该-o标志没有生成我想要的目标文件名:

$ gnatmake --GCC=g++ -D bin/src/ghdl_grt/ -f -u -c src/ghdl_grt/grt-vstrings_io.adb -o bin/src/ghdl_grt/grt-vstrings_io.adb.o

g++ -c -Isrc/ghdl_grt/ -I- -o /home/jon/controlix-code/bin/src/ghdl_grt/grt-vstrings_io.o src/ghdl_grt/grt-vstrings_io.adb

如您所见,它获得了正确的路径,但文件名应以 . 结尾.adb.o且仅以.o. 有任何想法吗?

4

2 回答 2

6

对于 gnatmake,-o '选择一个替代的可执行文件名'。但即使在 macOS 上单独使用 gcc(或 g++)也会失败,因为gnat1: incorrect object file name.

我发现你可以编译到汇编器然后编译它。使用我碰巧撒谎的本地文件,

$ g++ -D $PWD -c gator2.adb -S -o gator2.adb.s
$ g++ -D $PWD -c gator2.adb.s
于 2019-08-06T07:11:11.393 回答
3

好吧,这是一个奇怪的命名方案,但是...... gnatmake只允许您指定备用可执行文件名称-o

-o name 选择一个备用的可执行文件名

但是,您可以告诉 gnatmake 将选项传递给编译器:

-cargs opts 选项被传递给编译器

同样,对于活页夹和链接器:

-bargs opts 选项被传递给活页夹

-largs opts 选项被传递给链接器

因此,

$ gnatmake --GCC=g++ -D bin/src/ghdl_grt/ -f -u -c src/ghdl_grt/grt-vstrings_io.adb -cargs -o bin/src/ghdl_grt/grt-vstrings_io.adb.o
于 2019-08-06T06:57:52.833 回答