当我想编译它时,我的C程序有问题。它适用于Ubuntu 11.04,但是当我转到Ubuntu 13时,我遇到了这个问题。
我用这个Makefile编译:
all:
gcc -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include \
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -lglib-2.0 -D_FILE_OFFSET_BITS=64 \
-D_LARGEFILE_SOURCE -g -Wall -Wextra -std=c99 -lm *.c -o concatener
我收到这些错误:
undefined reference to « g_str_equal »
undefined reference to « g_str_equal »
undefined reference to « g_array_remove_index »
undefined reference to « g_array_remove_index »
为什么它不识别这些功能?我是否错误地链接到glib库?
答案 0 :(得分:0)
gcc命令看起来很好,我看不出任何明显错误,与-lglib-2.0
的链接应该是你想要的 1 。
我猜测的是,在你的Ubuntu 11.04系统上你安装了glib开发包,而你的13系统上没有安装它。我认为软件包名称应该是libglib2.0-dev。
1 如果您想要更通用一些,可以用
替换硬编码的编译和链接选项`pkg-config --cflags glib-2.0`
和
`pkg-config --libs glib-2.0`