c - GCC 符号查找错误

标签 c gcc makefile symbols undefined-symbol

我尝试启动可执行文件,但收到此错误:

.dudac/stage/monkey/lib/hello.duda: undefined symbol: DDS_sequence_BoardGlobalParameters_BoardGPSoftState__alloc

而链接和编译工作正常

这是我的 makefile:

# ====================================
# Date      : Tue 21, Feb 2017 at 10:15


NAME    = hello
CC      = /opt/windriver/wrlinux-small/7.0-xxxxxx-3543dr/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/arm-wrs-linux-gnueabi/arm-wrs-linux-gnueabi-gcc
CFLAGS  = -g -Wall -DDEBUG -L/opt/PrismTech/Vortex_v2/Device/VortexOpenSpliceRTE/6.7.1p2/RTS/armv7at2_vfp_neon.WRlinux7_gcc/lib -ldcpssac -ldcpsisocpp2
#-g -Wall -DDEBUG -fPIC

LDFLAGS =
DEFS    =
INCDIR  =  -I/home/T0181049/.dudac/stage/monkey//include/ -I/home/T0181049/.dudac/stage/monkey//src/include -I/home/T0181049/.dudac/stage/monkey//plugins/duda/src -I/home/T0181049/.dudac/stage/monkey//plugins/duda/ -I/opt/PrismTech/Vortex_v2/Device/VortexOpenSpliceRTE/6.7.1p2/HDE/armv7at2_vfp_neon.WRlinux7_gcc/include -I/opt/PrismTech/Vortex_v2/Device/VortexOpenSpliceRTE/6.7.1p2/HDE/armv7at2_vfp_neon.WRlinux7_gcc/include/dcps/C/SAC -I/opt/PrismTech/Vortex_v2/Device/VortexOpenSpliceRTE/6.7.1p2/HDE/armv7at2_vfp_neon.WRlinux7_gcc/include/sys -I/opt/PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1p1/HDE/x86_64.linux/include -I/opt/PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1p1/HDE/x86_64.linux/include/sys -I/opt/windriver/wrlinux-small/7.0-xxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include -I/opt/windriver/wrlinux-small/7.0-xxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include/c++ -I/opt/windriver/wrlinux-small/7.0-xxxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include/c++/4.9.1 -I/opt/windriver/wrlinux-small/7.0-xxxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include/c++/4.9.1/arm-windriverv7atneon-linux-gnueabi -I/opt/windriver/wrlinux-small/7.0-xxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include/c++/4.9.1/backward -I/opt/windriver/wrlinux-small/7.0-xxxxx-3543dr/sysroots/armv7at2-vfp-neon-wrs-linux-gnueabi/usr/include/dtc -I/opt/windriver/wrlinux-small/7.0-xxxxxx-3543dr/sysroots/x86_64-wrlinuxsdk-linux/usr/lib/arm-wrs-linux-gnueabi/gcc/arm-wrs-linux-gnueabi/4.9.1/include -I/opt/windriver/wrlinux-small/7.0-xxxxx-3543dr/sysroots/x86_64-wrlinuxsdk-linux/usr/lib/arm-wrs-linux-gnueabi/gcc/arm-wrs-linux-gnueabi/4.9.1/include-fixed


OBJECTS = main.o

_PATH     = $(patsubst /%, %, $(CURDIR))
_CC       = @/bin/echo -e "  [\033[33mCC\033[0m]   $@"; $(CC)
_DD       = @/bin/echo -e "  [\033[32mDD\033[0m]   $@"; $(CC)
_CC_QUIET = @/bin/echo -n; $(CC)

all: $(NAME).duda

$(NAME).duda: $(OBJECTS)
    $(_DD) $(CFLAGS) $(DEFS) -shared -o $@ $^ -lc $(LDFLAGS)

.c.o:
    $(_CC) -c $(CFLAGS) $(DEFS) $(INCDIR) -fPIC $<
    $(_CC_QUIET) -MM -MP $(CFLAGS) $(DEFS) $(INCDIR) $*.c -o $*.d > /dev/null &2>&1

clean:
    rm -rf *.o *.d *~ $(NAME).duda

我该如何解决这个问题? 谢谢

最佳答案

在链接期间,您指定了不在标准路径中的库

解决方案

  • 静态链接
  • 使用LD_LIBRARY_PATH
  • 使用LD_PRELOAD
  • 使用rpath

关于c - GCC 符号查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388210/

相关文章:

c++ - 为什么 make 会忽略我的修改?

MPI "hello world"编译失败

c# - 了解 cmp(比较器函数)如何用作另一个函数的参数

找不到符号 "Embeddedrcall_Init"

c# - 将指针传递给 DLL 中的函数

linux -/tmp 文件夹和 gcc

linux - 从 x86 函数(x87 的 flds/fstps)返回时,信号 NaN 被破坏

c - 如何在 Code::Blocks 中添加另一个 C 文件

makefile - 在单独的对象目录中构建树外 Linux 内核模块

bash - 将变量从 bash 脚本传递到 makefile