gcc glib 符号查找错误
gcc glib symbol lookup error
我目前正在编写一个使用 GLib-2.0 作为其数据结构的小 C 程序。
我正在使用以下命令进行编译:
gcc -g -O3 -std=gnu99 -fPIC -shared -I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` `pkg-config --libs glib-2.0` \
-o runtimesamplingagent.so runtimesamplingagent.c
这没有问题。
但是,当我 运行 程序时,出现以下错误:
symbol lookup error: ./runtimesamplingagent.so: undefined symbol: g_node_new
这是什么原因?
我是 C 的新手,但我猜这是某种链接问题。
任何提示可能是什么原因造成的?
我正在 Ubuntu 14.04 LTS 64 位机器上工作,安装了 libglib-2.0-dev。
追加
-lglib-2.0
到构建命令的末尾,修复它。
您已经在构建命令中包含了 linking 选项;问题是放错地方了。
您的命令如下所示:
gcc -g -O3 -std=gnu99 -fPIC -shared \
-I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` \
`pkg-config --libs glib-2.0` \ <<<
-o runtimesamplingagent.so \
runtimesamplingagent.c
在标有 <<<
的行中,您已经指定了 link GLib 所需的选项。唯一的问题是它放错了地方。你应该把它放在最后,在 .c 文件之后。
因此您的命令应该如下所示:
gcc -g -O3 -std=gnu99 -fPIC -shared \
-I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` \
-o runtimesamplingagent.so \
runtimesamplingagent.c \
`pkg-config --libs glib-2.0`
我目前正在编写一个使用 GLib-2.0 作为其数据结构的小 C 程序。
我正在使用以下命令进行编译:
gcc -g -O3 -std=gnu99 -fPIC -shared -I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` `pkg-config --libs glib-2.0` \
-o runtimesamplingagent.so runtimesamplingagent.c
这没有问题。
但是,当我 运行 程序时,出现以下错误:
symbol lookup error: ./runtimesamplingagent.so: undefined symbol: g_node_new
这是什么原因?
我是 C 的新手,但我猜这是某种链接问题。 任何提示可能是什么原因造成的?
我正在 Ubuntu 14.04 LTS 64 位机器上工作,安装了 libglib-2.0-dev。
追加
-lglib-2.0
到构建命令的末尾,修复它。
您已经在构建命令中包含了 linking 选项;问题是放错地方了。
您的命令如下所示:
gcc -g -O3 -std=gnu99 -fPIC -shared \
-I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` \
`pkg-config --libs glib-2.0` \ <<<
-o runtimesamplingagent.so \
runtimesamplingagent.c
在标有 <<<
的行中,您已经指定了 link GLib 所需的选项。唯一的问题是它放错了地方。你应该把它放在最后,在 .c 文件之后。
因此您的命令应该如下所示:
gcc -g -O3 -std=gnu99 -fPIC -shared \
-I/usr/local/java/jdk1.8.0_20/include \
-I/usr/local/java/jdk1.8.0_20/include/linux \
`pkg-config --cflags glib-2.0` \
-o runtimesamplingagent.so \
runtimesamplingagent.c \
`pkg-config --libs glib-2.0`