我创建了一个程序,它获取加载/存储操作的内容以创建内存配置文件。它汇编得很好。但是,当我尝试运行它时,我收到以下错误:
Elf error: Request error: invalid ELF_C_* argument
--FATAL-- #68: Dyninst was unable to create the specified process
--FATAL-- #68: create process failed bootstrap
profile: profile.c:27: void createProcess(const char*, const char**):
Assertion `g_bpProcess' failed.
我正在使用Red Hat系统。核心3.10.26。 GCC 4.8.2。
我安装了boost 1.53。将它添加到PATH和LD_LIBRARY_PATH,
使用--prefix=/path/to/elf_bld/
使用--enable-shared --prefix=/path/to/dwarf_bld/ and with export LIBS="-lelf", export LDFLAGS="-L/path/to/elf_bld/lib/" , CPPFLAGS="-I/path/to/elf_bld/include"
使用--prefix=/path/to/Dyn_bld/ --with-boost=/path/to/boost_1_53_0/ --with-libelf=/path/to/elf_bld --with-libdwarf-incdir=/path/to/lobdwarf --with-libdwarf-libdir=/path/to/libdwarf
安装不是root用户。
我编译
CC = g++
CFLAGS = -Wall -static
EXECNAME= profile
LIB = -L /path/to/boost_1_53_0/stage/lib -L/path/to/Dyn_bld/lib -L /path/to/libdwarf -L /path/to/elf_bld/lib
INCLUDE = -I /path/to/boost_1_53_0/ -I /path/to/Dyn_bld/include/ -I /path/to/libdwarf/ -I /path/to/elf_bld/include/
DYNINST_ROOT =/path/to/Dyn_bld/lib
$(EXECNAME): $(EXECNAME).o
$(CC) $(EXECNAME).o ${INCLUDE} ${LIB} \
-ldyninstAPI -lsymtabAPI -lcommon -ldwarf -lelf -o $(EXECNAME)
$(EXECNAME).o: ./$(EXECNAME).c
$(CC) -g -c $(CFLAGS) $(EXECNAME).c
clean:
@rm -f $(EXECNAME).o $(EXECNAME) core
和
export CC=gcc
export DYNINST_ROOT=/path/to/Dyn_bld
export DYNINSTAPI_RT_LIB=/path/to/Dyn_bld/lib/libdyninstAPI_RT.so.8.1.1
那么,有人可以帮我吗?
我对此非常不满。任何帮助表示赞赏。
谢谢, 德米特里