Компиляция libptrace - PullRequest
       19

Компиляция libptrace

3 голосов
/ 02 мая 2011

Попытка скомпилировать libptrace (http://sourceforge.net/projects/libptrace/). Проект не объявлял о каких-либо предпочтительных средствах запроса поддержки ( К сожалению, этот проект не указал лучший способ получить помощь ). В любом случае, проблема, с которой я сталкиваюсь, заключается в следующем:

% ./build.sh
% ...[SUCCESS]
% ./configure
% ...[SUCCESS]
% make
Making all in src
make[2]: Entering directory `/home/xxx/build/libptrace-git.git/src'
make[2]: *** No rule to make target `../lib/libgnu.la', needed by `libptrace.la'.  Stop.
make[2]: Leaving directory `/home/xxx/build/libptrace-git.git/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/xxx/build/libptrace-git.git'
make: *** [all] Error 2
%

Если вы гуглите libptrace и libgnu.la, вы получите ноль хитов. Поискивая его в исходном коде, возьмите свежее из git, вы получите:

% grep -sre libgnu.la *
src/Makefile.in:libptrace_la_DEPENDENCIES = ../lib/libgnu.la
src/Makefile.in:libptrace_la_LIBADD = ../lib/libgnu.la
src/Makefile.am:libptrace_la_LIBADD = ../lib/libgnu.la
src/Makefile:libptrace_la_DEPENDENCIES = ../lib/libgnu.la
src/Makefile:libptrace_la_LIBADD = ../lib/libgnu.la

Я понятия не имею, как сгенерировать архивный файл libtool, и у источника, похоже, нет никаких целей или сценариев make для этого.

Примечание для администратора: пожалуйста, добавьте тег `libptrace 'к этому вопросу - очевидно, очень популярную тему - я не могу этого сделать, так как не отвечаю количеству очков 1,5K: (


В ответ на поправку Мела к build.sh, вот новые ошибки, сгенерированные в `make ':

gcc -DHAVE_CONFIG_H -I. -I../.. -I../../src    -g -O2 -Wall -MT test-linux-dlsym.o -MD -MP -MF                     .deps/test-linux-dlsym.Tpo -c -o test-linux-dlsym.o test-linux-dlsym.c
mv -f .deps/test-linux-dlsym.Tpo .deps/test-linux-dlsym.Po
/bin/sh ../../libtool --tag=CC   --mode=link gcc  -g -O2 -Wall   -o test-linux-dlsym test-linux-dlsym.o            ../../src/libptrace.la 
libtool: link: gcc -g -O2 -Wall -o .libs/test-linux-dlsym test-linux-dlsym.o  ../../src/.libs/libptrace.so         -Wl,-rpath -Wl,/usr/local/lib
test-linux-dlsym.o: In function `main':
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:24: undefined reference to             `ptrace_elf_get_link_map_head'
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:40: undefined reference to             `ptrace_elf_get_link_map_next'
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:31: undefined reference to             `ptrace_elf_get_symtab'
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:32: undefined reference to             `ptrace_elf_get_strtab'
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:33: undefined reference to             `ptrace_elf_get_hash'
/home/XXX/dev/insecurity/build/libptrace-git/tests/linux/test-linux-dlsym.c:34: undefined reference to             `ptrace_elf_get_hash_chains'
collect2: ld returned 1 exit status
make[2]: *** [test-linux-dlsym] Error 1
make[2]: Leaving directory `/home/XXX/dev/insecurity/build/libptrace-git.git/tests/linux'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/XXX/dev/insecurity/build/libptrace-git.git'
make: *** [all] Error 2

Ответы [ 3 ]

0 голосов
/ 11 мая 2011

сборка на Ubuntu 10.10, gnulib требуется, как указано выше, и, вероятно, целый набор инструментов сборки (autoconf, automake) * Патч

ниже исправляет ошибку ссылки, которая возникает при сборке git cc97c9e3d830bd1d567011ec099846343cef547a

1004* diff --git a / src / Makefile.am b / src / Makefile.am index 6de8cf2..5f8d9bc 100644 --- a / src / Makefile.am +++ b / src / Makefile.am @@ -23,8 +23,8 @@ endif if TARGET_LINUX libptrace_la_SOURCES + = libptrace_linux.c libptrace_linux.h \ libptrace_wrapper.c libptrace_wrapper.h \ - libptrace_linux_procfs.c libptrace_linux_procf_sh_f_in_f_c_f_c_c_c_c_in_c_c_f_c_c_f_c_c_c_t_c_c_d_c_c_c_c_in_c_c_c_in_id.h \ + libptrace_elf.c libptrace_elf.h
libptrace_la_HEADERS + = libptrace_linux.h libptrace_wrapper.h, если TARGET_I386 libptrace_la_SOURCES + = libptrace_linux_x86.c * * * * +8 + @38861008 * if TARGET_FREEBSD libptrace_la_SOURCES + = libptrace_freebsd.c libptrace_freebsd.h \ - libptrace_wrapper.c libptrace_wrapper.h
- # libptrace_elf.c libptrace_elf.h
+ libptrace_wrapper.c libptrace_wrapper.h \ + libptrace_elf.c libptrace_elf.h
libptrace_la_HEADERS + = libptrace_freeES__t__t_t_t_t_t_t_t_t_t__t_t_t_t_t__t__t_t__t__t__t__t__t__t__t__t__t__t__t__t_t__t_t_t_t__t_t_t_t_race в файл_t_race_t_t_t_t_t_ в_ в_ в_t_ в_tt_t__t____ в_ в_ вольную библиотеку в случае вольную библиотеку »здесь здесь - это это тдл это.c libptrace_freebsd_x86.h
0 голосов
/ 13 мая 2011

Прежде всего, это работает только на Linux.Если вы хотите, чтобы это работало в других системах, вам нужно написать заголовок src / libptrace_config.h в configure.ac, как это видно по grep COMPILE_HDR configure.ac.

Во-вторых, все, что мне нужно, это следующий патччтобы получить точку, где сгенерированный заголовок отсутствует в моей системе.Конечно, gnulib должен быть установлен, а gnulib-tool должен быть в $ PATH.

diff --git a/build.sh b/build.sh
index 81caf8a..cc195c4 100755
--- a/build.sh
+++ b/build.sh
@@ -1,7 +1,7 @@
 #!/bin/sh

 # Import gnulib modules which we use
-gnulib-tool --import stdint
+gnulib-tool --libtool --import stdint

 # Update timestamp to make sure autoconf rebuilds everything.
 touch configure.ac
0 голосов
/ 11 мая 2011

Это gnulib: http://www.gnu.org/software/gnulib/

Может быть установлен в Debian с apt-get install gnulib

...