Gtk:通过编译源代码

时间:2015-11-06 07:32:30

标签: macos gtk2

我想在Mac笔记本电脑中使用Gtk库。它的操作系统是小牛队。对于我的程序,我不关心Mac的外观和感觉。为了编译我的程序,我不喜欢图形界面,但更喜欢gccmake命令行工具(Linux风格)。因此,我不想通过安装Xcode(一个占用太多空间的怪物)加上macport的端口Gtk来安装Gtk库。我更喜欢编译源代码来安装Gtk库。接下来是我的步骤。

  1. 通过从Apple开发人员网站安装Xcode命令行工具gcc来构建makecommandlinetoolsosx10.9forxcode6.2.dmg

  2. 通过安装X构建XQuartz-2.7.8.dmg开发环境,因为X11不再附带Mac OS。

  3. 下载Gtk源包及其所有依赖项。我会按顺序安装软件包。

  4. zlib-1.2.8 -> pkg-config-0.29 -> jpegsrc.v9a.tar.gz -> libpng-1.6.18 -> tiff-4.0.6 -> libiconv-1.14 -> gettext-0.19.6 -> freetype-2.6 -> fontconfig-2.11.94 -> libffi-3.2.1 -> pixman-0.33.4 -> cairo-1.14.4 -> glib-2.47.1 -> pango-1.38.1 -> atk-2.18.0 -> gdk-pixbuf-2.33.1 -> gtk+-2.24.28

    1. 构建用于编译的环境变量。

      GTK_DIR="$HOME/gtk"
      CPPFLAGS="-I$GTK_DIR/include"
      LDFLAGS="-L$GTK_DIR/lib"
      PKG_CONFIG_PATH="$GTK_DIR/lib/pkgconfig"
      export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
      
      LD_LIBRARY_PATH="$GTK_DIR/lib"
      PATH="$GTK_DIR/bin:$PATH"
      export LD_LIBRARY_PATH PATH
      
    2. pkg-config-0.29

      的编译
      LDFLAGS="-framework CoreFoundation -framework Carbon"  
      ./configure --with-internal-glib --prefix=$GTK_DIR   
      make  
      make install  
      
    3. gtk+-2.24.28

      的编译
      CPPFLAGS="-I$GTK_DIR/include -I$GTK_DIR/include/cairo -I$GTK_DIR/include/gdk-pixbuf-2.0 -I$GTK_DIR/include/pango-1.0 -I$GTK_DIR/include/atk-1.0 -I$GTK_DIR/include/freetype2 -I$GTK_DIR/include/gio-unix-2.0 -I$GTK_DIR/include/glib-2.0 -I$GTK_DIR/lib/glib-2.0/include"  
      LD_LIBRARY_PATH="$GTK_DIR/lib"
      ./configure --prefix=$GTK_DIR   
      make  
      make install 
      
    4. other个包

      的编译
      LD_LIBRARY_PATH="$GTK_DIR/lib"  
      ./configure --prefix=$GTK_DIR   
      make  
      make install 
      
    5. 除了最后一个gtk+-2.24.28之外的所有包的编译。编译gtk + -2.24.28时的错误是

      /bin/sh ../../libtool  --tag=CC   --mode=link gcc  -g -O2 -Wall -export-dynamic -framework CoreFoundation -framework Carbon -L/Users/wu/gtk/lib -o builder builder.o ../../gdk/libgdk-x11-2.0.la ../../gtk/libgtk-x11-2.0.la -L/usr/X11/lib -lXrender -lX11    -lm 
      libtool: link: gcc -g -O2 -Wall -o .libs/builder builder.o  -L/Users/wu/gtk/lib ../../gdk/.libs/libgdk-x11-2.0.dylib -L/usr/X11/lib ../../gtk/.libs/libgtk-x11-2.0.dylib /Users/wu/Downloads/gtk/src/gtk+-2.24.28/gdk/.libs/libgdk-x11-2.0.dylib -lXinerama /Users/wu/gtk/lib/libpangocairo-1.0.dylib /Users/wu/gtk/lib/libpango-1.0.dylib /Users/wu/gtk/lib/libgthread-2.0.dylib /Users/wu/gtk/lib/libgdk_pixbuf-2.0.dylib /Users/wu/gtk/lib/libgio-2.0.dylib -lresolv /Users/wu/gtk/lib/libgobject-2.0.dylib /Users/wu/gtk/lib/libffi.dylib /Users/wu/gtk/lib/libcairo.dylib /Users/wu/gtk/lib/libpixman-1.dylib /Users/wu/gtk/lib/libfontconfig.dylib -lexpat /Users/wu/gtk/lib/libfreetype.dylib -lbz2 /Users/wu/gtk/lib/libpng16.dylib -lz -lSM -lICE -lXext /Users/wu/gtk/lib/libgmodule-2.0.dylib /Users/wu/gtk/lib/libglib-2.0.dylib /Users/wu/gtk/lib/libintl.dylib /Users/wu/gtk/lib/libiconv.dylib -lc -lXrender -lX11 -lm -pthread -framework ApplicationServices -framework Carbon -framework CoreFoundation
      clang: warning: argument unused during compilation: '-pthread'
      Undefined symbols for architecture x86_64:
        "_atk_object_ref_relation_set", referenced from:
            _test_widget in builder.o
        "_atk_relation_get_relation_type", referenced from:
            _test_widget in builder.o
        "_atk_relation_get_type", referenced from:
            _test_widget in builder.o
        "_atk_relation_set_get_n_relations", referenced from:
            _test_widget in builder.o
        "_atk_relation_set_get_relation", referenced from:
            _test_widget in builder.o
      ld: symbol(s) not found for architecture x86_64
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      make[4]: *** [builder] Error 1
      make[3]: *** [all-recursive] Error 1
      make[2]: *** [all] Error 2
      make[1]: *** [all-recursive] Error 1
      make: *** [all] Error 2
      
    6. 错误是关于Undefined symbols for architecture x86_64的链接错误。我用Google搜索了错误,建议在Xcode GUI中设置正确的架构。但它没有帮助,因为我在笔记本电脑中根本没有Xode GUI。

      我也试过CC="gcc -arch i386",但也没有用。我尝试了LDFLAGS="-framework CoreFoundation -framework Carbon -L$GTK_DIR/lib",但也没有奏效。对于最后两次尝试,我只重新编译了从cairo-1.14.4到gtk + -2.24.28的软件包,而不是所有软件包。

      任何线索?请帮忙。谢谢。

      编辑:使用atk-2.20解决了这个问题。

1 个答案:

答案 0 :(得分:0)

我试图这样做;将-latk-1.0添加到LDFLAGS修复了问题。似乎autotools / gcc / what缺少一些lib / include标志。我不知道为什么会这样,但是在调用./configure时手动添加它们可以正常工作。

我认为在这种情况下,关于架构的投诉只是一个红色的鲱鱼。

相关问题