无法识别 - 选项"ck_size"



我正在使用GCC ver-4.6.4(在Mac和Linux Mint 15中(来编译我为研究而做的代码。

我正在使用的命令是:

gfortran -O2 -fopenmp -Wl,-stack_size,1000000 <...Lots of files...> -o a.out

,其中我省略了实际的文件名。

这段代码在 Mac 中编译正常,但是我在 Mint 中收到以下错误:

/usr/bin/ld: unrecognized -a option `ck_size'
collect2: error: ld returned 1 exit status
make[1]: *** [a.out] Error 1

在 Mint 中,如果我根本不使用任何标志,这将编译,因此这个问题与 OpenMP 有关。

但是,我确实需要 OpenMP 并且不明白它在错误中所说的内容,因为我没有"ck_size"。顺便说一句,删除 -O2 无济于事。

该问题与

OpenMP 无关,它与您的不同操作系统有关。

-stack_size特定于 Macintosh,指的是堆栈上数组的最大大小。Linux 通过终端命令 ulimit 更改堆栈大小(要检查您的 Mint 设置类型,ulimit -a查看所有内容,堆栈大小可以通过 ulimit -s 查看,有关更多信息,请参阅 ulimit 手册页(。

因此,您需要从编译器标志中废弃整个-stack_size,100000部分,这在 Linux 中没有任何意义。

您将-Wl,-stack_size,1000000传递给 gfortran,后者将选项"-stack_size 1000000"传递给链接器 ld。它将"st"解释为单个字母选项"-s"和"-t",然后将下一个字母读取为选项"-a",并将单词的其余部分("ck_size"(作为其参数。

我找不到对ld -stack_size选项的引用.看起来该选项是 --stack ,因此您需要放置类似-Wl,--stack,1000000的东西。

相关内容

  • 没有找到相关文章

最新更新