Неопределенные символы для архитектуры x86_64:

Я пытаюсь скомпилировать эту библиотеку на 64-разрядной версии mac os x Mavericks 10.9.3: http://www.openfec.org/downloads.html

Я точно следил за README и получил эту ошибку:

Связывание разделяемой библиотеки C ../../bin/Release/libopenfec.dylib

   Undefined symbols for architecture x86_64:
      "_of_add_from_multiple_symbols", referenced from:
         _of_linear_binary_code_backward_substitution in of_ml_tool.c.o
      "_of_add_to_symbol", referenced from:
         _of_linear_binary_code_decode_with_new_symbol in of_it_decoding.c.o
         _of_linear_binary_code_simplify_linear_system in of_ml_decoding.c.o
         _of_linear_binary_code_col_forward_elimination_pivot_reordering in of_ml_tool.c.o
         _of_linear_binary_code_apply_gauss_pivoting in of_ml_tool_2.c.o
         _of_linear_binary_code_inject_symbol_in_triangular_system in of_ml_tool_2.c.o
         _of_linear_binary_code_solve_triangular_system in of_ml_tool_2.c.o
         _of_linear_binary_code_invert_dense_system in of_ml_tool_2.c.o
         ...
      "_of_calloc", referenced from...:
         ...

ld: символ (ы) не найден для архитектуры x86_64
clang: error: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
make [2]: * [../bin /Release/libopenfec.dylib] Ошибка 1
make [1]: *
[src / CMakeFiles / openfec.dir / all] Ошибка 2
make: *** [all] Ошибка 2

Я просто следил за README для дистрибутива OpenFEC (находится по адресу http://www.openfec.org/downloads.html < / а>). При попытке сделать эта ошибка возникает. Понятия не имею, в чем проблема.

Вот что я сделал после распаковки дистрибутива:
(1.): mkdir build
(2.): cd build
(3.): cmake .. -DDEBUG: STRING = OFF
(4.): сделать

Любые идеи?

Изменить: Попытка заставить cmake использовать 64-разрядную версию, все еще не сработала.
(Пытался заставить его использовать 32-разрядную версию только для пинки, также не сработало)


person h4x0rjax    schedule 17.06.2014    source источник
comment
Неопределенные символы для архитектуры x86_64 означают, что библиотека построена для какой-то другой архитектуры. Целевая архитектура библиотеки может быть 32-битной (например, i386). Узнайте, как собрать эту библиотеку для 64-битной архитектуры (x86_64).   -  person Raviprakash    schedule 18.06.2014
comment
Можете ли вы просто взглянуть на этот вопрос о компиляции в 64-битной архитектуре с использованием cmake.   -  person Raviprakash    schedule 18.06.2014
comment
Я сделал, и я попытался это сделать. К сожалению, это не устранило проблему.   -  person h4x0rjax    schedule 18.06.2014


Ответы (1)


К вашему сведению, если это не решено. Убедитесь, что вы правильно связываете свои библиотеки.

FIND_LIBRARY(LIB_NAME_LIB lib)
TARGET_LINK_LIBRARIES(my_executable ${LIB_NAME_LIB})

В вашем файле CMakeLists.txt.

person zcourts    schedule 27.10.2014
comment
Я новичок в CMake, поэтому мне нужна небольшая помощь. Я получаю символы Undefined для архитектуры x86_64 для ускорения. Я использую CLion, который использует Cmake. Это то, что у меня есть в нижней части моего файла CMakeLists.txt: find_package (ТРЕБУЕТСЯ OpenCV) find_package (Boost 1.55.0 НЕОБХОДИМЫЕ КОМПОНЕНТЫ поток файловой системы chrono system atomic program_options) include_directories ($ {Boost_INCLUDE_DIRS}) add_executable target_link_libraries (Oneprint $ {OpenCV_LIBS}) target_link_libraries (Oneprint $ {Boost_LIBRARIES}) Как мне использовать ваше предложение (настоящее имя или псевдоним)? - person Patricia; 25.03.2015