Macos Gtk:通过编译源代码在Mavericks(Apple Mac OS)中构建Gtk库
我想在mac笔记本电脑中使用Gtk libs。它的操作系统是特立独行的。对于我的程序,我不关心Mac的外观和感觉。为了编译我的程序,我不喜欢图形界面,但更喜欢Macos Gtk:通过编译源代码在Mavericks(Apple Mac OS)中构建Gtk库,macos,gtk2,Macos,Gtk2,我想在mac笔记本电脑中使用Gtk libs。它的操作系统是特立独行的。对于我的程序,我不关心Mac的外观和感觉。为了编译我的程序,我不喜欢图形界面,但更喜欢gcc和make命令行工具(Linux风格)。因此,我不想通过安装Xcode(占用太多空间的怪物)加上macport的端口Gtk来安装Gtk libs。我更喜欢编译源代码来安装Gtk libs。下面是我的步骤 通过在Apple开发者网站上安装Xcode命令行工具commandlinetoolsosx10.9forxcode6.2.dmg,构
gcc
和make
命令行工具(Linux风格)。因此,我不想通过安装Xcode(占用太多空间的怪物)加上macport的端口Gtk来安装Gtk libs。我更喜欢编译源代码来安装Gtk libs。下面是我的步骤
commandlinetoolsosx10.9forxcode6.2.dmg
,构建gcc
和make
XQuartz-2.7.8.dmg构建X
开发环境,因为X11不再随Mac OS提供
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->fontconfi-2.11.94->libffi-3.2.2.1->pixman-0.33.4->cairo-1.14.4->glib-2.47.1->pango-1.38.1->atk-2.18.0->gdk-pixb1.33++
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
构建用于编译的环境变量
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
软件包的编译pkg-config-0.29
LDFLAGS="-framework CoreFoundation -framework Carbon"
./configure --with-internal-glib --prefix=$GTK_DIR
make
make install
包的编译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
其他
包的编译
LD_LIBRARY_PATH="$GTK_DIR/lib"
./configure --prefix=$GTK_DIR
make
make install
除了最后一个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
该错误是关于体系结构x86\u 64未定义符号的链接错误。我用谷歌搜索了错误,建议在Xcode GUI中设置正确的体系结构。但它并没有帮助,因为我的笔记本电脑中根本并没有XodeGUI
我还尝试了CC=“gcc-arch i386”
,但都没有成功。我尝试了LDFLAGS=“-frameworkcorefoundation-frameworkcarbon-L$GTK_DIR/lib”
,但都没有成功。在最后两次尝试中,我只重新编译了cairo-1.14.4到gtk+-2.24.28的包,而不是所有的包
有什么线索吗?请帮忙。多谢各位
编辑:使用atk-2.20解决了问题 我也试着这么做;将-latk-1.0
添加到LDFLAGS修复了该问题。autotools/gcc/which似乎缺少一些lib/include标志。我不知道这是为什么,但是在调用/configure
时手动添加它们很好
我认为在这种情况下,对建筑的抱怨只是一种转移视线的行为。我也在尝试这样做;将-latk-1.0
添加到LDFLAGS修复了该问题。autotools/gcc/which似乎缺少一些lib/include标志。我不知道这是为什么,但是在调用/configure
时手动添加它们很好
我认为在这种情况下,对建筑的抱怨只是一种转移视线的行为