无法识别的-a选项`ck_size'

时间:2013-10-07 22:39:10

标签: gcc openmp gfortran

我正在使用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没有帮助。

2 个答案:

答案 0 :(得分:3)

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

-stack_size特定于Macintosh,并且指的是堆栈上数组的最大大小。 Linux通过终端命令ulimit更改堆栈大小(要检查您的Mint设置类型,ulimit -a以查看所有内容,可以使用ulimit -s查看堆栈大小,请参阅{{3} }了解更多信息)。

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

答案 1 :(得分:1)

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

我找不到-stack_size的{​​{1}}选项的引用。看起来该选项为ld,因此您需要添加类似--stack的内容。