Я получил сообщение об ошибке при попытке запустить программу.
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', пожалуйста, дайте мне предложение.
Итак, пакет 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, эти функции могут не загружаться.
blockquote>В вашем случае никакие функции, на которые ссылается
f11.c
, не загружаются из указанной библиотеки, поскольку они перечислены доf11.c
. Это несколько нелогично, но я уверен, что компиляция сg++ f11.c -lfftw3 -lcpgplot -lpgplot
будет решением вашей проблемы. Возможно, вам придется проверить порядок библиотек, в случае, если они зависят друг от друга. В общем, если (файл или библиотека) x зависит от (файл или библиотека) y, убедитесь, что x указан перед y в командной строке, данной компоновщику.
Похоже, вам не хватает каких-то динамических библиотек. вероятно, стандартные C-библиотеки и быстрое преобразование Фурье. Попробуйте переустановить ваш компилятор - это может помочь. и второе, что нужно сделать, чтобы еще раз создать вашу быструю фурье-библиотеку, которую вы пытаетесь связать.