前提・実現したいこと
現在Linux上で外部ライブラリのリンクの仕方について勉強しているのですが。
まずやりたいことは外部ライブラリlibget.so(整数100の値をreturnするget関数が作られているget.cファイルを動的ライブラリとして生成)をmain.cファイル(main関数は何もせず上にset関数が定義されておりその中ではget関数がコールされる)とリンクさせて1つの動的ライブラリ(libmy.so)を生成させたいです。
外部ライブラリlibget.soは生成したのですが、これをCMakeLists.txt上にどのように書けばmain.cファイルをリンクして1つの動的ライブラリを生成できるのかが分りません。
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.5) PROJECT(testProject) SET(PROJECT_NAME testProject) SET(CMAKE_VERBOSE_MAKEFILE true) SET(CMAKE_C_COMPILER "arm-linux-gnueabi-gcc") ADD_EXECUTABLE(Main main.c) find_library(LIBPATH NAMES libget.so HINTS /home/to2836/Desktop/workbench/test3 REQUIRED) target_link_libraries(Main ${LIBPATH}) ADD_LIBRARY(my SHARED main.c libget.so)
main.c
#include<stdio.h> int get(); int set(){ int num; num=get(); return num; } int main(){ return 0; }
ここでcmakeをしたらlibmy.soが生成されます。
nmを使ってlibmy.soに入っている関数確認
to2836@to2836:~/Desktop/workbench/test3/build$ nm libmy.so 000003e0 t $a 0000039c t $a 0000054c t $a 000003a4 t $a 00000550 t $a 00000404 t $a 00000448 t $a 00000498 t $a 00000500 t $a 00000504 t $a 000003a8 t $a 000003bc t $a 00011030 B __bss_end__ 00011030 B _bss_end__ 0001102c B __bss_start 0001102c B __bss_start__ 000003e0 t call_weak_fn 0001102c b completed.9928 w __cxa_finalize 000003fc t $d 00000438 t $d 00000488 t $d 00011028 d $d 000004ec t $d 00010f34 t $d 00010f30 t $d 0001102c b $d 00000554 r $d 000003b8 t $d 00000404 t deregister_tm_clones 00000498 t __do_global_dtors_aux 00010f34 t __do_global_dtors_aux_fini_array_entry 00011028 d __dso_handle 00010f38 a _DYNAMIC 0001102c D _edata 00011030 B _end 00011030 B __end__ 0000054c T _fini 00000500 t frame_dummy 00010f30 t __frame_dummy_init_array_entry 00000554 r __FRAME_END__ U get 00011000 a _GLOBAL_OFFSET_TABLE_ w __gmon_start__ 0000039c T _init w _ITM_deregisterTMCloneTable w _ITM_registerTMCloneTable 00000530 T main 00000448 t register_tm_clones 00000504 T set 0001102c d __TMC_END__
set関数は入っているのですがget関数はU(未定義シンボル)として表示されます…
U get … … … 00000504 T set

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 02:13
2018/10/03 02:27
2018/10/03 02:34
2018/10/03 02:50