проблемы компиляции

Я получил сообщение об ошибке при попытке запустить программу.

undefined reference to `fftw_malloc'
f11.c:(.text+0x24d): undefined reference to `fftw_malloc'
f11.c:(.text+0x260): undefined reference to `fftw_malloc'
f11.c:(.text+0x273): undefined reference to `fftw_malloc'
f11.c:(.text+0x286): undefined reference to `fftw_malloc' 

и т. Д.

В чем проблема? Он работает нормально с версией 11.04, пожалуйста, помогите!


я переустановил gcc, но проблема все еще существует, я использовал такую ​​команду: g ++ -lfftw3 -lcpgplot -lpgplot f11.c. выходы: неопределенная ссылка tofftw_malloc 'f11.c :(. text + 0x260): неопределенная ссылка на fftw_malloc' f11.c :(. text + 0x273): неопределенная ссылка tofftw_malloc 'f11.c :(. text + 0x286) : неопределенная ссылка на `fftw_malloc

неопределенная ссылка на cpgbeg' f11.c:(.text+0x2d3c): undefined reference to cpgpage 'f11.c :(. text + 0x2d49): неопределенная ссылка на cpgsch' f11.c:(.text+0x2d71): undefined reference to cpgsvp', пожалуйста, дайте мне предложение.

0
задан 25 September 2012 в 22:36

2 ответа

Итак, пакет Ubuntu libfftw3-dev установлен, что очевидно, поскольку вы получите сообщение об ошибке

/usr/bin/ld: cannot find -lfftw3

, если библиотека не найдена компоновщиком.

В документации по компоновщику gcc есть подсказка о том, что порядок файлов, передаваемых компоновщику, важен. Ссылаясь на документацию

Разница в том, где в команде вы пишете эту опцию [-l library ]; компоновщик ищет и обрабатывает библиотеки и объектные файлы в указанном порядке. Таким образом, foo.o -lz bar.o ищет библиотеку z после файла foo.o, но до bar.o. Если bar.o ссылается на функции в z, эти функции могут не загружаться.

В вашем случае никакие функции, на которые ссылается f11.c, не загружаются из указанной библиотеки, поскольку они перечислены до f11.c. Это несколько нелогично, но я уверен, что компиляция с

g++ f11.c -lfftw3 -lcpgplot -lpgplot

будет решением вашей проблемы. Возможно, вам придется проверить порядок библиотек, в случае, если они зависят друг от друга. В общем, если (файл или библиотека) x зависит от (файл или библиотека) y, убедитесь, что x указан перед y в командной строке, данной компоновщику.

0
ответ дан 25 September 2012 в 22:36

Похоже, вам не хватает каких-то динамических библиотек. вероятно, стандартные C-библиотеки и быстрое преобразование Фурье. Попробуйте переустановить ваш компилятор - это может помочь. и второе, что нужно сделать, чтобы еще раз создать вашу быструю фурье-библиотеку, которую вы пытаетесь связать.

0
ответ дан 25 September 2012 в 22:36

Другие вопросы по тегам:

Похожие вопросы: