#c #linux #octave
#c #linux #octave
Вопрос:
При попытке ко 2-му примеруhttps://octave.org/doc/v5.1.0/Standalone-Programs.html#Standalone-Programs Я получил следующую ошибку :
embedded.cc:(.text 0x132): undefined reference to `octave::feval(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > constamp;, octave_value_list constamp;, int)'
Опция -d mkoctfile предоставляет следующие две команды g , где 1-я работает нормально.
g -std=gnu 11 -c -fPIC -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include/octave-5.1.0/octave/.. -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include/octave-5.1.0/octave -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include -pthread -fopenmp -fPIC embedded.cc -o /tmp/oct-EYDDih.o
и
g -std=gnu 11 -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include/octave-5.1.0/octave/.. -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include/octave-5.1.0/octave -I/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/include -pthread -fopenmp -fPIC -rdynamic -fPIC -o embedded /tmp/oct-EYDDih.o -L/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/lib -L/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/lib/octave/5.1.0 -loctinterp -loctave
Есть идеи, как это решить?
Комментарии:
1. вы выполнили команду, как сообщалось?
mkoctfile --link-stand-alone standalone.cc -o standalone
2. Вторая строка подразумевает, что mkoctfile ожидает найти библиотеки liboctinterp.so и liboctave.so в пути
/grid/common/pkgsData/octave-v5.1.0/Linux/RHEL7.0-2017-x86_64/lib/octave/5.1.0
. Ваша ошибка предположительно подразумевает, что этого не удалось сделать. Итак, я полагаю, что первым шагом отладки здесь было бы спросить, действительно ли в этом месте существуют библиотеки liboctinterp и liboctave? (и имеют ли они соответствующие разрешения?)3. PS, я могу подтвердить, что пример на этой странице компилируется, связывается и успешно запускается на моем ноутбуке. (хотя для запуска вам необходимо указать местоположение библиотек одновременно, т. Е. Используя LD_LIBRARY_PATH)
Ответ №1:
Я обнаружил, что в основной причине этой проблемы был загружен модуль EDA tool (Cadence Xcelium), который позволяет g указывать на его частную версию, когда я заменяю g на /bin / g , он работает в моей среде.