Ask Your Question
1

undefined symbol 문제

asked 2018-11-01 10:15:47 +0900

simpler gravatar image

updated 2018-11-01 10:42:24 +0900

Jinuk gravatar image

빌드는 이상 없는데 실행하면 아래와 같이 종료가 됩니다. libtest.so 파일은 있는걸로 확인 되는데요. 뭐가 문제 일까요?

[INFO] test_server@login is starting.
I1101 01:03:25.705612 29124 main.cc:595] Engine version: 1.0.0-3624xenial
I1101 01:03:25.705945 29124 main.cc:601] Command line arguments: [test_server.login]
I1101 01:03:25.706048 29124 main.cc:602] Server flavor: login
I1101 01:03:25.706161 29124 main.cc:616] Crashreporter initialized; .dmp will be written to /home/good/projects/test-Server/test-build/debug/dumps
I1101 01:03:26.143991 29124 main.cc:638] License info: {"production":true,"expires":"2019-Sep-14 23:59:59"}
I1101 01:03:26.151038 29124 manifest_handler.cc:666] libfunapi_mongodblogger.so loaded.
I1101 01:03:26.152526 29124 manifest_handler.cc:666] libtest.so not loaded.

Broadcast message from systemd-journald@login (Thu 2018-11-01 01:03:26 UTC):

test_server.login[29124]: Assert failed: handle: testServer: failed to open libtest.so: /home/good/projects/test-Server/test-build/debug/src/libtest.so: undefined symbol: _ZN3test4Room8kNullPtrE

F1101 01:03:26.152704 29124 manifest_handler.cc:669] Assert failed: handle: testServer: failed to open libtest.so: /home/good/projects/test-Server/test-build/debug/src/libtest.so: undefined symbol: _ZN3test4Room8kNullPtrE
*** Check failure stack trace: ***
    @     0x7f8f6253f5cd  google::LogMessage::Fail()
    @     0x7f8f62541433  google::LogMessage::SendToLog()
    @     0x7f8f6253f15b  google::LogMessage::Flush()
    @     0x7f8f6253f379  google::LogMessage::~LogMessage()
    @           0x9c1343  fun::LoadComponentsLibraries()
    @           0x74ed55  main
    @     0x7f8f6028f830  __libc_start_main
    @           0x777be9  _start
    @              (nil)  (unknown)
/usr/share/funapi/bash/launcher-common.sh: line 154: 29124 Aborted                 (core dumped) $fork_prefix $FUNAPI_BIN_DIR/funapi_runner $args $@
[ERROR] test_server@login termianted with 134.
good@login:~/projects/test-Server/test-build/debug$
edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted
0

answered 2018-11-01 10:21:10 +0900

DK Moon gravatar image

안녕하세요. 해당 문제는 libtest.so 를 구성하는 소스파일들 (즉 게임의 프로젝트 파일) 중에 선언은 했지만 정의가 빠진 것이 있는 것처럼 보입니다.

혹시 namespace test 안에 Room::kNullPtr 이라는 것을 선언하신 것 같은데, 이에 대해서 정의도 같이 넣어주셨는지 궁금합니다. 그러니까 class 선언에 저 kNullPtr 이 들어가 있는데 대응되는 .cc 파일 등에 정의를 하시지 않은 경우 이를 포함해주시면 될 것 같습니다.

이렇게 정의가 빠져서 없는 symbol 로 나오는 경우 좀 더 알아보기 쉽게 에러메시지를 찍을 수 있으면 좋겠지만, 안타깝게 저희가 사용하는 라이브러리 다이나믹 로딩 방식에서 이를 처리할 수 있는 좋은 방식이 없는 상황입니다. 불편하시겠지만 양해부탁드리겠습니다. ㅠㅠ

edit flag offensive delete link more
0

answered 2018-11-01 11:21:13 +0900

Jinuk gravatar image

구현이 포함되지 않은 심볼은 다음과 같은 방법으로 확인하실 수 있습니다.

$ c++filt
_ZN4test4Room8kNullPtrE
test::Room::kNullPtr

c++filt 란 명령을 실행 후, 없다고 나오는 심볼 정보를 입력하면 해당 심볼의 C++ 쪽 이름을 확인할 수 있습니다. (위에 붙여주신 로그에서는 임의로 원래 3글자인 서버 이름을 test로 치환한 것으로 보입니다. 원본 이름을 c++filt 에 넣으면 확인 할 수 있습니다.)

edit flag offensive delete link more

Comments

넵 확인했습니다. !~

simpler gravatar imagesimpler ( 2018-11-01 12:31:54 +0900 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-11-01 10:15:47 +0900

Seen: 34 times

Last updated: Nov 01