从可执行文件创建二进制文件
从可执行文件创建二进制文件
我需要一些基本的理解,这个文件夹里有四个文件:Makefile、libfoo_8_3.so、libfoo_9_3.so和test.c。我将test.c编译成目标文件test.o和.d文件,编译成功。这两个动态库(libfoo_8_3.so和libfoo_9_3.so)被我的C程序使用。我想生成可执行文件。我正在使用Makefile,因为我需要来自不同文件夹中的C文件的头文件和结构体。我想生成一个可执行二进制文件,当我执行如下代码时:gcc -fno-builtin-log -fno-omit-frame-pointer -msse2 -DMEMS_DEBUG -DMEMS_DISABLED -D__HMAP_64BIT_COMPLIANT_ID_LENGTH__ -DNETOID_LINUX -D_REENTRANT -DXML_BYTE_ORDER=12 -DNX_BYTE_ORDER=12 -DTHIRTY_TWO_BIT -DALLOW_ISERVER_H323 -D_POSIX_PTHREAD_SEMANTICS -DMEMS_DEBUG -ggdb -L/usr/local/lib -L/usr/lib64 -L/SBC/lib/x86_64 -L/SBC/pkgs_x86_64/def/lib -L/SBC/bin/x86_64 -I(包含很多文件夹) -o test test.o
这给我返回以下错误:
est.o: 在函数“main”中:
/SBC/ser/test.c:33: 对“dlopen”的未定义的引用
/SBC/ser/test.c:35: 对“dlopen”的未定义的引用
/SBC/ser/test.c:50: 对“dlsym”的未定义的引用
/SBC/ser/test.c:52: 对“dlsym”的未定义的引用
/SBC/ser/test.c:68: 对“tracer_tag_key”的未定义的引用
/SBC/ser/test.c:68: 对“pthread_getspecific”的未定义的引用
/SBC/ser/test.c:68: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:68: 对“NetLogModuleFacilities”的未定义的引用
/SBC/ser/test.c:68: 对“NetLogModuleNames”的未定义的引用
/SBC/ser/test.c:68: 对“NetSyslogSprintf”的未定义的引用
/SBC/ser/test.c:68: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:68: 对“NetLogModuleNames”的未定义的引用
/SBC/ser/test.c:74: 对“tracer_tag_key”的未定义的引用
/SBC/ser/test.c:74: 对“pthread_getspecific”的未定义的引用
/SBC/ser/test.c:74: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:74: 对“NetLogModuleFacilities”的未定义的引用
/SBC/ser/test.c:74: 对“NetLogModuleNames”的未定义的引用
/SBC/ser/test.c:74: 对“NetSyslogSprintf”的未定义的引用
/SBC/ser/test.c:74: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:74: 对“NetLogModuleNames”的未定义的引用
/SBC/ser/test.c:82: 对“tracer_tag_key”的未定义的引用
/SBC/ser/test.c:82: 对“pthread_getspecific”的未定义的引用
/SBC/ser/test.c:82: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:82: 对“NetLogModuleFacilities”的未定义的引用
/SBC/ser/test.c:82: 对“NetLogModuleNames”的未定义的引用
/SBC/ser/test.c:82: 对“NetSyslogSprintf”的未定义的引用
/SBC/ser/test.c:82: 对“netLogStruct”的未定义的引用
/SBC/ser/test.c:82: 对“NetLogModuleNames”的未定义的引用我需要对此有一个正确的理解,或者如何解决这个问题?