在 Eclipse 中构建 gtk+

Building gtk+ in eclipse

我正在尝试在 Eclipse 中构建一个简单的 gtk+ 示例。

#include <gtk-2.0/gtk/gtk.h>
#include <glib-2.0/glib.h>

int main (int argc, char *argv[])
{
  /*-- Declare the GTK Widgets used in the program --*/
  GtkWidget *window;

  /*--  Initialize GTK --*/
  gtk_init (&argc, &argv);

  /*-- Create the new window --*/
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  /*-- Display the window --*/
  gtk_widget_show(window);

  /*-- Start the GTK event loop --*/
  gtk_main();

  /*-- Return 0 if exit is successful --*/
  return 0;
}

构建项目后我的控制台输出是...

make all 
Building file: ../src/gtkTest.c
Invoking: GCC C Compiler
gcc -I/usr/local/include -O0 -g3 -Wall -c -fmessage-length=0   `pkg-config --cflags --libs gtk+-2.0` -MMD -MP -MF"src/gtkTest.d" -MT"src/gtkTest.d" -o "src/gtkTest.o" "../src/gtkTest.c"
Finished building: ../src/gtkTest.c

Building target: testParallel
Invoking: GCC C Linker
gcc  `pkg-config --cflags --libs gtk+-2.0` -o "testParallel"  ./src/gtkTest.o   
./src/gtkTest.o: In function `main':
gtkTest.c:(.text+0x1e): undefined reference to `gtk_init'
gtkTest.c:(.text+0x28): undefined reference to `gtk_window_new'
gtkTest.c:(.text+0x38): undefined reference to `gtk_widget_show'
gtkTest.c:(.text+0x3d): undefined reference to `gtk_main'
collect2: error: ld returned 1 exit status

但是如果我在命令行中使用以下命令编译它,它就会成功构建。

gcc -o main ../src/gtkTest.c `pkg-config gtk+-2.0 --cflags --libs`

这两个命令有什么区别?我如何在 Eclipse 中执行此操作?

不同的是这个编译-link命令:

gcc -o main ../src/gtkTest.c `pkg-config gtk+-2.0 --cflags --libs`

正确地将所需的库放在 linkage 序列中,而不是 需要这些库的目标文件;而这个 link 命令:

gcc  `pkg-config --cflags --libs gtk+-2.0` -o "testParallel"  ./src/gtkTest.o

错误地将库 放在需要它们的对象文件 之前。 更改为:

gcc -o "testParallel"  ./src/gtkTest.o `pkg-config --cflags --libs gtk+-2.0` 

需要符号定义的对象必须link编辑在提供的对象之前 定义。您的问题与

对称相反