Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04


Date: Fri, 10 Feb 2017 17:41:18 +0000
From: SASHA NICOLAS DA ROCHA PINHEIRO <darochapinhe@xxxxxxxx>
Subject: Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04

Hi Sazzadur,


the libraries you wish to use must be placed after the files that use it. So the problem you are having is the command line you set to compile.


Instead of doing:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon CFG.cpp -o CFG


Do:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib CFG.cpp -o CFG -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon


I think that is what is happening in your others attempts.


Regards

Sasha


De: Dyninst-api <dyninst-api-bounces@xxxxxxxxxxx> em nome de Sazzadur Rahaman <sazzad14@xxxxxx>
Enviado: sexta-feira, 10 de fevereiro de 2017 10:58:35
Para: Bill Williams
Cc: dyninst-api@xxxxxxxxxxx
Assunto: Re: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in Ubuntu 16.04
 
Hi Williams,

Thanks for your reply. Yes. I installed Dynist into my /usr/local/lib. Here is the snap of my /usr/local/lib directory:

BugpointPasses.so             libLLVMAMDGPUAsmPrinter.a     libLLVMInstCombine.a       libLLVMPowerPCAsmParser.a     libLLVMX86Info.a
cmake                         libLLVMAMDGPUCodeGen.a        libLLVMInstrumentation.a   libLLVMPowerPCAsmPrinter.a    libLLVMX86Utils.a
libcommon.so                  libLLVMAMDGPUDesc.a           libLLVMInterpreter.a       libLLVMPowerPCCodeGen.a       libLLVMXCoreAsmPrinter.a
libcommon.so.9.3              libLLVMAMDGPUInfo.a           libLLVMipo.a               libLLVMPowerPCDesc.a          libLLVMXCoreCodeGen.a
libcommon.so.9.3.0            libLLVMAMDGPUUtils.a          libLLVMIRReader.a          libLLVMPowerPCDisassembler.a  libLLVMXCoreDesc.a
libdwarf.so                   libLLVMAnalysis.a             libLLVMLibDriver.a         libLLVMPowerPCInfo.a          libLLVMXCoreDisassembler.a
libdynC_API.so                libLLVMARMAsmParser.a         libLLVMLineEditor.a        libLLVMProfileData.a          libLLVMXCoreInfo.a
libdynC_API.so.9.3            libLLVMARMAsmPrinter.a        libLLVMLinker.a            libLLVMRuntimeDyld.a          libLTO.so
libdynC_API.so.9.3.0          libLLVMARMCodeGen.a           libLLVMLTO.a               libLLVMScalarOpts.a           libparseAPI.so
libdynDwarf.so                libLLVMARMDesc.a              libLLVMMC.a                libLLVMSelectionDAG.a         libparseAPI.so.9.3
libdynDwarf.so.9.3            libLLVMARMDisassembler.a      libLLVMMCDisassembler.a    libLLVMSparcAsmParser.a       libparseAPI.so.9.3.0
libdynDwarf.so.9.3.0          libLLVMARMInfo.a              libLLVMMCJIT.a             libLLVMSparcAsmPrinter.a      libpatchAPI.so
libdynElf.so                  libLLVMAsmParser.a            libLLVMMCParser.a          libLLVMSparcCodeGen.a         libpatchAPI.so.9.3
libdynElf.so.9.3              libLLVMAsmPrinter.a           libLLVMMipsAsmParser.a     libLLVMSparcDesc.a            libpatchAPI.so.9.3.0
libdynElf.so.9.3.0            libLLVMBitReader.a            libLLVMMipsAsmPrinter.a    libLLVMSparcDisassembler.a    libpcontrol.so
libdyninstAPI_RT.a            libLLVMBitWriter.a            libLLVMMipsCodeGen.a       libLLVMSparcInfo.a            libpcontrol.so.9.3
libdyninstAPI_RT.so           libLLVMBPFAsmPrinter.a        libLLVMMipsDesc.a          libLLVMSupport.a              libpcontrol.so.9.3.0
libdyninstAPI_RT.so.9.3       libLLVMBPFCodeGen.a           libLLVMMipsDisassembler.a  libLLVMSymbolize.a            libstackwalk.so
libdyninstAPI_RT.so.9.3.0     libLLVMBPFDesc.a              libLLVMMipsInfo.a          libLLVMSystemZAsmParser.a     libstackwalk.so.9.3
libdyninstAPI.so              libLLVMBPFInfo.a              libLLVMMIRParser.a         libLLVMSystemZAsmPrinter.a    libstackwalk.so.9.3.0
libdyninstAPI.so.9.3          libLLVMCodeGen.a              libLLVMMSP430AsmPrinter.a  libLLVMSystemZCodeGen.a       libstp.a
libdyninstAPI.so.9.3.0        libLLVMCore.a                 libLLVMMSP430CodeGen.a     libLLVMSystemZDesc.a          libsymLite.so
libinstructionAPI.so          libLLVMCppBackendCodeGen.a    libLLVMMSP430Desc.a        libLLVMSystemZDisassembler.a  libsymLite.so.9.3
libinstructionAPI.so.9.3      libLLVMCppBackendInfo.a       libLLVMMSP430Info.a        libLLVMSystemZInfo.a          libsymLite.so.9.3.0
libinstructionAPI.so.9.3.0    libLLVMDebugInfoCodeView.a    libLLVMNVPTXAsmPrinter.a   libLLVMTableGen.a             libsymtabAPI.so
libLLVMAArch64AsmParser.a     libLLVMDebugInfoDWARF.a       libLLVMNVPTXCodeGen.a      libLLVMTarget.a               libsymtabAPI.so.9.3
libLLVMAArch64AsmPrinter.a    libLLVMDebugInfoPDB.a         libLLVMNVPTXDesc.a         libLLVMTransformUtils.a       libsymtabAPI.so.9.3.0
libLLVMAArch64CodeGen.a       libLLVMExecutionEngine.a      libLLVMNVPTXInfo.a         libLLVMVectorize.a            LLVMHello.so
libLLVMAArch64Desc.a          libLLVMHexagonAsmParser.a     libLLVMObjCARCOpts.a       libLLVMX86AsmParser.a         ocaml
libLLVMAArch64Disassembler.a  libLLVMHexagonCodeGen.a       libLLVMObject.a            libLLVMX86AsmPrinter.a        python2.7
libLLVMAArch64Info.a          libLLVMHexagonDesc.a          libLLVMOption.a            libLLVMX86CodeGen.a           python3.5
libLLVMAArch64Utils.a         libLLVMHexagonDisassembler.a  libLLVMOrcJIT.a            libLLVMX86Desc.a              x86_64-linux-gnu
libLLVMAMDGPUAsmParser.a      libLLVMHexagonInfo.a          libLLVMPasses.a            libLLVMX86Disassembler.a

So You can see that, all these libraries are present in my /usr/local/lib directory.

Best Regards,
Sazzadur Rahaman

On Fri, Feb 10, 2017 at 11:53 AM, Bill Williams <bill@xxxxxxxxxxx> wrote:
Did Dyninst install into /usr/local/lib, or is it elsewhere on your system? All of those methods should be exported and visible (and if they weren't, Dyninst itself wouldn't build and link correctly), so the most likely problem is that the parseAPI library is not in your link path.

--bw

________________________________________
From: Dyninst-api <dyninst-api-bounces@xxxxxxxxedu> on behalf of Sazzadur Rahaman <sazzad14@xxxxxx>
Sent: Friday, February 10, 2017 10:43 AM
To: dyninst-api@xxxxxxxxxxx
Subject: [DynInst_API:] Building Examples from parseAPI and dataflowAPI in      Ubuntu 16.04

Hi All,

I am also facing a similar problem as this (https://www-auth.cs.wisc.edu/lists/dyninst-api/2017/msg00055.shtml) while I try to build Examples from parseAPI and dataflowAPI. For example, when I run "make" to build the code from 3.2 Control flow graph traversal, I get the following error message:

g++ -g -O2 -std=c++11 -I/usr/local/include -L/usr/local/lib -lparseAPI -lsymtabAPI -lelf -ldynDwarf -ldwarf -lelf -ldynElf -lcommon CFG.cpp -o CFG
/tmp/ccf4Fy7w.o: In function `main':
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:27: undefined reference to `Dyninst::ParseAPI::SymtabCodeSource::SymtabCodeSource(char*)'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:28: undefined reference to `Dyninst::ParseAPI::CodeObject::CodeObject(Dyninst::ParseAPI::CodeSource*, Dyninst::ParseAPI::CFGFactory*, Dyninst::ParseAPI::ParseCallback*, bool)'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:31: undefined reference to `Dyninst::ParseAPI::CodeObject::parse()'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:60: undefined reference to `Dyninst::ParseAPI::Function::blocks()'
/home/krishnokoli/dyninst-tools/binary-parsing/CFG.cpp:61: undefined reference to `Dyninst::ParseAPI::Function::blocks()'
collect2: error: ld returned 1 exit status
Makefile:7: recipe for target 'CFG' failed
make: *** [CFG] Error 1

Sidenote: Before installing Dyninst, I manually installed Boost library, elf library, iberty library but I left libdwarf to be installed by itself during Dyninst build process.

Any help on this issue will be lifesaving. Thank you very much for your help!

Best Regards,
Sazzadur Rahaman


[← Prev in Thread] Current Thread [Next in Thread→]