[英]How to complie a static gdbserver
我已經對GDB的源代碼進行了一些更改,因此我想編譯一個新的可執行文件。 我已經成功編譯了一個新的GDB,但是當編譯gdb-server時,它失敗了,我需要在Makefile中使LDFLAGS = -static
,因為Android沒有某些庫。 失敗消息是這樣的:
gcc -shared -fPIC -Wl,--no-undefined -g -O2 -I. -I. -I./../common -I./../regformats -I./.. -I./../../include -I./../gnulib/import -Ibuild-gnulib-gdbserver/import -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -Wempty-body -DGDBSERVER \
-static -Wl,--dynamic-list=./proc-service.list -o libinproctrace.so ax-ipa.o tracepoint-ipa.o format-ipa.o utils-ipa.o regcache-ipa.o remote-utils-ipa.o common-utils-ipa.o tdesc-ipa.o print-utils-ipa.o rsp-low-ipa.o amd64-linux-ipa.o linux-amd64-ipa.o -ldl -pthread
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbeginT.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libinproctrace.so] Error 1
使用ld時失敗,因此我想知道如何編譯靜態gdbserver?
非常感謝。
gcc -shared -fPIC ... -static ... -o libinproctrace.so ...
在此命令中,您libinproctrace.so
GCC將帶有-static
標志的共享庫libinproctrace.so
鏈接到您。 GCC的回答: “對不起Dave,恐怕我做不到” 。
所以不要那樣做。 而是編輯Makefile
並將-static
專門添加到gdbserver
的鏈接行,而不是添加到命令行中的所有內容 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.