3

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ポイントカウントを満たしていないため、追加できません:(


Melによる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
4

3 に答える 3

0

まず第一に、これはLinuxでのみ機能します。これを他のシステムで機能させたい場合は、。でわかるように、configure.acにsrc/libptrace_config.hヘッダーを書き込む必要があります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
于 2011-05-13T00:00:27.110 に答える
0

Ubuntu 10.10 でビルドします。上記のように gnulib が必要で、おそらく多数のビルド ツール (autoconf、automake) が必要です。

以下のパッチは、git cc97c9e3d830bd1d567011ec099846343cef547a のビルド時に発生するリンク エラーを修正します。

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_procfs.h -# libptrace_elf.c libptrace_elf.h
+ libptrace_linux_procfs.c libptrace_linux_procfs.h \ + libptrace_elf.c libptrace_elf.h
libptrace_la_HEADERS += libptrace_linux.h libptrace_wrapper.h if TARGET_I386 libptrace_la_SOURCES += libptrace_linux_x86.c libptrace_linux_x86.h @@ -38,8 +38,8 @@ endif

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_la_headers += libptrace_freebsd.wrapper.freebs. h if TARGET_I386 libptrace_la_SOURCES += libptrace_freebsd_x86.c libptrace_freebsd_x86.h

于 2011-05-11T10:23:06.680 に答える
0

これは gnulib です: http://www.gnu.org/software/gnulib/

Debianにインストールできますapt-get install gnulib

于 2011-05-11T09:42:23.547 に答える