【发布时间】:2014-04-21 15:03:48
【问题描述】:
我不确定这是否是问我问题的正确方式。我只是尝试解决问题 4 天,现在我非常沮丧...我有以下问题:
之后我安装了 Ubuntu 13。以及一些库和软件包。然后我安装了 glib2 一切都很顺利,在执行 ./configure、make 或 make install 时没有出错。但是,当我尝试在 C 中编译测试文件时,我可以正常编译,但出现以下错误:
main.c:116: 参考 indéfinie vers « g_hash_table_new_full »
main.c:139: 参考 indéfinie vers « g_hash_table_lookup »
main.c:168: 参考 indéfinie vers « g_hash_table_insert »
main.c:181: 参考 indéfinie vers « g_hash_table_lookup »
main.c:211: 参考 indéfinie vers « g_hash_table_insert »
main.c:250: 参考 indéfinie vers « g_hash_table_lookup »
我编译:
gcc -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/include/glib-2.0/glib.h -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 格式
pkg-config --cflags --libs glib-2.0 给我:
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0
我试试这个命令:
gcc -v -H -std=c99 -g -Wall -D_GNU_SOURCE $(pkg-config --cflags glib-2.0) *.c $(pkg-config --libs glib-2.0) -o 格式
但我收到了这条消息:
gcc -v -H -std=c99 -g -Wall -D_GNU_SOURCE *.c -o 格式 使用内置规范。 COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper 目标:x86_64-linux-gnu 配置:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README。错误 --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build -id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin - -with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0- gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar- dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj。 jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-ab i=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --目标=x86_64-linux-gnu 线程模型:posix gcc 版本 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9) COLLECT_GCC_OPTIONS='-v' '-H' '-std=c99' '-g' '-Wall' '-D' '_GNU_SOURCE' '-o' 'formattage' '-mtune=generic' '-march=x86- 64' /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1 -quiet -v -imultiarch x86_64-linux-gnu -H -D _GNU_SOURCE main.c -quiet -dumpbase main.c -mtune=generic -march=x86 -64 -auxbase main -g -Wall -std=c99 -version -fstack-protector -Wformat -Wformat-security -o /tmp/ccuxfazT.s GNU C (Ubuntu/Linaro 4.8.1-10ubuntu9) 版本 4.8.1 (x86_64-linux-gnu) 由 GNU C 版本 4.8.1、GMP 版本 5.1.2、MPFR 版本 3.1.1-p2、MPC 版本 1.0.1 编译 GGC 启发式:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 忽略不存在的目录“/usr/local/include/x86_64-linux-gnu” 忽略不存在的目录“/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include”
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C (Ubuntu/Linaro 4.8.1-10ubuntu9) version 4.8.1 (x86_64-linux-gnu)
compiled by GNU C version 4.8.1, GMP version 5.1.2, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: b946adc090b5605f865521be8b22959c
. /usr/include/stdlib.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/gnu/stubs.h
.... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.. /usr/include/x86_64-linux-gnu/bits/waitflags.h
.. /usr/include/x86_64-linux-gnu/bits/waitstatus.h
... /usr/include/endian.h
.... /usr/include/x86_64-linux-gnu/bits/endian.h
.... /usr/include/x86_64-linux-gnu/bits/byteswap.h
..... /usr/include/x86_64-linux-gnu/bits/types.h
...... /usr/include/x86_64-linux-gnu/bits/wordsize.h
...... /usr/include/x86_64-linux-gnu/bits/typesizes.h
..... /usr/include/x86_64-linux-gnu/bits/wordsize.h
..... /usr/include/x86_64-linux-gnu/bits/byteswap-16.h
.. /usr/include/xlocale.h
.. /usr/include/x86_64-linux-gnu/sys/types.h
... /usr/include/time.h
... /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
... /usr/include/x86_64-linux-gnu/sys/select.h
.... /usr/include/x86_64-linux-gnu/bits/select.h
..... /usr/include/x86_64-linux-gnu/bits/wordsize.h
.... /usr/include/x86_64-linux-gnu/bits/sigset.h
.... /usr/include/time.h
.... /usr/include/x86_64-linux-gnu/bits/time.h
... /usr/include/x86_64-linux-gnu/sys/sysmacros.h
... /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
.. /usr/include/alloca.h
... /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.. /usr/include/x86_64-linux-gnu/bits/stdlib-float.h
. /usr/include/stdio.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.... /usr/include/wchar.h
... /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h
.. /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
.. /usr/include/x86_64-linux-gnu/bits/sys_errlist.h
. /usr/include/string.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
main.c:5:18: fatal error: glib.h: No such file or directory
#include <glib.h>
^
compilation terminated.
make: *** [all] Error 1
我认为它变得更加复杂
谢谢,
【问题讨论】:
-
您确定安装了包
libglib2.0-dev吗?dpkg -L libglib2.0-dev |grep glib.h说什么? -
@BasileStarynkevitch 是的,/usr/include/glib-2.0/glib.h
-
重新安装:
sudo aptitude reinstall libglib2.0-dev -
@BasileStarynkevitch sudo aptitude reinstall libglib2.0-dev sudo: aptitude: command not found 如何解决这个问题
-
尝试
apt-get而不是aptitude。此外,尝试通过面对面的方式获得帮助。你看起来被许多简单的问题迷失了。