【发布时间】:2016-07-13 07:23:49
【问题描述】:
我需要在多台计算机上编译 P3DFFT。问题是,当它在我的个人电脑上编译时,我无法在使用不同编译器的另一台电脑上编译它。
我的电脑:
mpif90 -g -O2 -I../../include driver_rand.c /home/martin/p3dfft/build/libp3dfft.a -L/home/martin/fftw3/libs -lfftw3 -o driver_rand
我的mpif90 版本:
GNU Fortran (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
另一台计算机上的命令:
mpif90 -g -O2 -I../../include driver_rand.c ../../build/libp3dfft.a -L../../../fftw-3.3.4/.libs -lfftw3 -o driver_rand
错误:
driver_rand.c: file not recognized: File format not recognized
显然是编译器行为不同导致的,无法编译.c文件:
ifort (IFORT) 16.0.1 20151021
但是当我尝试使用mpicc 编译它并使用mpif90 仅用于链接时,我得到另一个错误:
mpicc -c -g -O2 -I../../include driver_rand.c ../../build/libp3dfft.a -L../../../fftw-3.3.4/.libs -lfftw3 -o driver_rand.o
mpif90 -g -O2 -I../../include driver_rand.o ../../build/libp3dfft.a -L../../../fftw-3.3.4/.libs -lfftw3 -o driver_rand
/home/bes0030/p3dfft/sample/C/driver_rand.c:67: multiple definition of `main'
/apps/all/ifort/2016.1.150-GCC-4.9.3-2.25/compilers_and_libraries_2016.1.150/linux/compiler/lib/intel64_lin/for_main.o:for_main.c:(.text+0x0): first defined here
/apps/all/ifort/2016.1.150-GCC-4.9.3-2.25/compilers_and_libraries_2016.1.150/linux/compiler/lib/intel64_lin/for_main.o: In function `main':
for_main.c:(.text+0x2a): undefined reference to `MAIN__'
现在我完全迷路了——这次我做错了什么?我以前从未见过“main 的多重定义”错误。
编辑:
我已经阅读了这些问题,但似乎没有一个问题与我描述的问题相同:
【问题讨论】:
标签: linux compilation compiler-errors fft fftw