Windows で動作する CMake ファイルを変更して、Linux で共有オブジェクトを作成しています。
CMake ファイルは makefile を生成し、Linux で "make" を実行すると、foo ライブラリのオブジェクトがビルドされ、4 つのライブラリすべてのリンクが表示されます。例えば:
CXX スタティック ライブラリ lib_foo_d.a のリンク
そして最後の共有オブジェクト
CXX スタティック ライブラリ lib_scen_files_d.a のリンク
しかし、最後に表示されます
/usr/bin/ld: lib_foo3/lib_foo3_d.a(chap_alt_scence_defs.cpp.o):
共有オブジェクトを作成する場合、`.rodata' に対する再配置 R_X86_64_32 は使用できません。 -fPICで 再
コンパイルする
他のいくつかのオプションを試しましたが、喜びはありません。以下は私のCMakeLists.txtです。どんな助け/批判も私にとって有益です.
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
CMAKE_POLICY( SET CMP0017 NEW )
PROJECT( disk_space_model )
INCLUDE( ../libs/helper_functions.cmake )
INCLUDE_THIRD_PARTY_SFC()
find_path_for_libs()
add_s_library( lib_foo1 )
add_s_library( lib_foo2)
add_s_library( lib_foo3)
add_s_library( lib_foo4)
SET( HEADER_FILES
stdafx.h
INS_sensor_model.h
)
SET( SOURCE_FILES
Disk_space_model.cpp
)
SET( RESOURCE_FILES
"Disk Space DLL.rc"
resource.h
)
COMMON_SETUP()
set( LIB_FILES
lib_foo
lib_foo1
lib_foo3
lib_foo4 )
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols")
ADD_LIBRARY( disk_space_model SHARED ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES} ${CMAKE_HELPER_FILES} )
SET_OUTPUT_DIRS( disk_space_model )
TARGET_LINK_LIBRARIES( disk_space_model ${LIB_FILES} )
ありがとう ...