nakka soft world !
[IT] Bitbake not found (try using -rpath or -rpath-link) 에러 본문
728x90
Bitbake를 사용해서 build 를 하는데, custom된 library를 적용해서 개발 할일이 생겼다.
이전에 사용하던 make나, cmake 정도로 생각하고, 뭐 그쯤이야 했으나.
이런
예상치도 못한 곳에서 뻥 뻥 터지고야 말았다.
심지어 아래와 같은 Log를 뿜으며 빌드도 되지 않는 상황.
| Invoking: GCC C++ Linker
| aarch64-poky-linux-g++ -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot -L../../HFWK/Lib -L../../DLT/deploy/lib -o "ManagerXXX" ./CSocketThread.o ./CPipeThread.o ./ClientSock.o
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: warning: libgio-2.0.so.0, needed by ../../HFWK/Lib/libgee_api.so, not found (try using -rpath or -rpath-link)
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: warning: libgobject-2.0.so.0, needed by ../../HFWK/Lib/libgee_api.so, not found (try using -rpath or -rpath-link)
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: warning: libglib-2.0.so.0, needed by ../../HFWK/Lib/libgee_api.so, not found (try using -rpath or -rpath-link)
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_bus_get_sync'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_variant_new'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_dbus_proxy_call_sync'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_variant_get'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_assertion_message_error'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_variant_unref'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_dbus_proxy_new_sync'
| /work/project/tmp/aarch64-poky-linux/managerxxx/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: ../../HFWK/Lib/libgee_api.so: undefined reference to `g_object_unref'
| collect2: error: ld returned 1 exit status
| makefile:78: recipe for target 'ManagerXXX' failed
| make: *** [ManagerXXX] Error 1
피나는 구글링으로 해결 방법이란 방법은 모두 뒤져서 적용 해봤으나 도통 먹질 않는다.
우선 "try using -rpath or -rpath-link" 라는 Comment 가 있어 이를 위해서 아래와 같이 LD Flag에 script를 추가 했다.
#===== LDFLAGS - add the flags to the linker command line.
LDFLAGS+=-lang-c++ -Wl,-E -M -Wl,-rpath=libgio-2.0.so.0
이렇게 해서 해결이 되었다면 이 포스팅은 없었을 것 이다.
어떻게 해야 하지, 혹자는 export하라는데, 이건 내가 원하는 방향이 아니다.
그러면 어떻게? 음... 잘모르겠다. Library 배포자에게 문의 했다.
아래를 추가 하란다.
CFLAGS += -pthread -lgio-2.0 -lgobject-2.0 -lglib-2.0
또는 아래와 같이 pkg-config 를 이용해도 된단다.
CFLAGS += $(shell pkg-config --libs --cflags gio-2.0 gio-unix-2.0 glib-2.0)
음.... 역시 안된다. make로 하면 될 것 같은데, bitbake로 해야 해서 안되는 것 같다.
팀 내부로 메일을 돌렸다.
누군가 회신이 왔다.
DEPENDS에 library 추가 하고, install에 install위치 추가 하란다.
읭? 지푸라기라도 잡아야 한다. 해보자.
아래 두개를 추가 했다.
DEPENDS = "glib-2.0"
do_install () {
install -d ${D}${libdir}
install -m 0755 ${S}/HFWK/LIB/*.so ${D}${libdir}
}
FILES_${PN} += "${libdir}/*"
오 유레카~!!!
성공이다.
NOTE: Tasks Summary: Attempted 1668 tasks of which 1658 didn't need to be rerun and all succeeded.
NOTE: Writing buildhistory
Summary: There were 2 WARNING messages shown.
이 자리를 빌어 도와준 동료에게 감사 한다.
혹시나 나와 같은 문제를 겪고 있는 사람이 있을까해서 포스팅을 남긴다.
이런건 영어로 써야 하는데....
728x90
'프로그래밍언어 > C++' 카테고리의 다른 글
[IT] bitbake library "already stripped" 에러 (0) | 2021.03.31 |
---|---|
[IT] bitbake "but no providers found in RDEPENDS_managerxxx" 에러 (0) | 2021.03.31 |
[C++] 간단한 Circular Queue (0) | 2019.05.08 |
[MFC] CString <-> string (0) | 2017.04.27 |
C++ 파일 입출력 (0) | 2017.03.27 |
Comments