octave standalone, пример сообщает о неопределенной ссылке на `ошибка octave::feval

#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 , он работает в моей среде.