Я строю свой проект с помощью cmake в Linux.
Я связываю некоторые статические библиотеки с помощью
set(BUILD_SHARED_LIBS FALSE)
set(CMAKE_EXE_LINKER_FLAGS "-static")
target_link_libraries(MyProject /usr/lib/libImlib2.a)
Он отлично работает в 32-битной Linux (в моем случае, Ubuntu), а не в 64-битной Ubuntu
Появляется это сообщение об ошибке.
/usr/bin/ld: /usr/lib64/libImlib2.a(api.o) : relocation R_X86_64_32 againts '.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/libImlib2.a : could not read symbols: Bad value
collect2:ld returned 1 exit status
В каком-то документе, который я нашел, говорится, что это проблема 64-битного Linux, необходимо установить флаги.
Итак, я добавляю
set(CMAKE_CXX_FLAGS_DEBUG "-fPIC")
set(CMAKE_CXX_FLAGS_RELEASE "-fPIC")
но ничего не изменилось.
Не могли бы вы дать мне несколько советов о том, что мне следует делать?
Большое спасибо за чтение этого вопроса.