當前位置:首頁 » 編程軟體 » 靜態編譯cairo

靜態編譯cairo

發布時間: 2022-11-26 15:27:27

❶ 如何使用gcc在EditPlus編輯器下對GTK程序進行靜態編譯

GTK的安裝

sudo apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器

sudo apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具

sudo apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件

sudo apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置

sudo apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序

sudo apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔

sudo apt-get instal glade libglade2-dev #這將安裝基於GTK的界面GTK是開發Gnome窗口的c/c++語言圖形庫。在Ubuntu的機器上折騰了一下,復制了網上教程的代碼在本機上編譯。代碼的文件名:t1.c。按照教程,用以下命令編譯:

gcc t1.c 'pkg-config --cflags --libs gtk+-2.0`

編譯結果:找不到gtk/gtk.h。

因為我的Ubuntu是Gnome系統,所以我以為gtk+2.0的開發程序(頭文件和庫文件)應該已經安裝在計算機上了。其實不然,如果在Ubuntu 上開發gtk+2.0的程序,需要安裝相應的頭文件和庫。在控制台窗口輸入sudo apt-get install libgtk2.0*, gtk+2.0所需的所有文件統通下載安裝完畢。再次應用編譯命令:gcc t1.c 'pkg-config --cflags --libs gtk+-2.0,編譯通過,運行。

pkg-config是一個用來管理包的程序,在控制台輸入 pkg-config --cflags --libs gtk+-2.0 的運行結果:

-DPNG_NO_MMX_CODE -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmole-2.0 -ldl -lglib-2.0

可以看出,輸出的文本包括了gcc編譯gtk+2.0所需要的所有選項(頭文件目錄和庫文件)。

這里有一點需要注意, gcc t1.c `pkg-config --cflags --libs gtk+-2.0`, pkg-config --cflags --libs gtk+-2.0兩側的引號並不是真正的引號,而是鍵盤數字件那一行,最左邊的那個字元。如果錯用了單引號,gcc無法使用 pkg-config --cflags --libs gtk+-2.0產生的文本作為編譯選項。構造程序。
$ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest
gcc gtk1.c `pkg-config --cflags --libs gtk+-2.0`

//////////////////////////////////////////////////////////////////////////////////////////////////////

首先獲得超級用戶許可權

apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器
apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具
apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件
apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置
apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序
apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔
apt-get instal glade libglade2-dev #這將安裝基於GTK的界面構造程序

都是安裝好後測試一下程序hello.c

#include <gtk/gtk.h> ----------我編譯時老是說找不到頭文件,後來在/usr/include里找到gtk-2.0/gtk/gtk.h,原來是路徑錯誤,最後將頭文件路徑修改為<gtk-2.0/gtk/gtk.h>,終於好了!

void hello(GtkWidget *widget,gpointer data)
{
g_print("Hello 大家好\n");
}
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
g_print ("delete event occurred\n");
return(TRUE);
}
void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello 大家好");
gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window); /*顯示一個窗口*/
gtk_main(); /*進入主循環*/
return(0);
}

最後編譯運行:

$ gcc hello.c -o hello `pkg-config --cflags --libs gtk+-2.0`
$ . /hello

////////////////////////////////////////////////////////////////////

GTK的安裝

sudo apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器

sudo apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具

sudo apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件

sudo apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置

sudo apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序

sudo apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔

sudo apt-get instal glade libglade2-dev #這將安裝基於GTK的界面GTK是開發Gnome窗口的c/c++語言圖形庫。在Ubuntu的機器上折騰了一下,復制了網上教程的代碼在本機上編譯。代碼的文件名:t1.c。按照教程,用以下命令編譯:

gcc t1.c 'pkg-config --cflags --libs gtk+-2.0`

編譯結果:找不到gtk/gtk.h。

因為我的Ubuntu是Gnome系統,所以我以為gtk+2.0的開發程序(頭文件和庫文件)應該已經安裝在計算機上了。其實不然,如果在Ubuntu 上開發gtk+2.0的程序,需要安裝相應的頭文件和庫。在控制台窗口輸入sudo apt-get install libgtk2.0*, gtk+2.0所需的所有文件統通下載安裝完畢。再次應用編譯命令:gcc t1.c 'pkg-config --cflags --libs gtk+-2.0,編譯通過,運行。

pkg-config是一個用來管理包的程序,在控制台輸入 pkg-config --cflags --libs gtk+-2.0 的運行結果:

-DPNG_NO_MMX_CODE -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmole-2.0 -ldl -lglib-2.0

可以看出,輸出的文本包括了gcc編譯gtk+2.0所需要的所有選項(頭文件目錄和庫文件)。

這里有一點需要注意, gcc t1.c `pkg-config --cflags --libs gtk+-2.0`, pkg-config --cflags --libs gtk+-2.0兩側的引號並不是真正的引號,而是鍵盤數字件那一行,最左邊的那個字元。如果錯用了單引號,gcc無法使用 pkg-config --cflags --libs gtk+-2.0產生的文本作為編譯選項。構造程序。

$ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest

gcc gtk1.c `pkg-config --cflags --libs gtk+-2.0`

linux下pangocairo這個庫是如何生成的

首先說說你說的庫的問題:我的理解是你需要實現一個定時器庫,對外提供timer_create()、timer_delete() 、timer_reset()三個介面函數,如果這樣只需要C語言編寫源文件,然後編譯成庫的形式,便可用於以後的調用,就像調用一些標准標准庫中的函數一樣。不清楚你要實現的定時器粒度,如果你需要的足夠精確的話,可以先看看tick是否滿足你的要求。再說說你所說的在進程中使用定時器函數:進程的創建通常涉及fork()函數,進程入門時可以參考這個

❸ xcode在用clang編譯cairo庫的時候出現的error和warning

cairo-quartz-font.c:789:26: error: implicit declaration of function
'FMGetATSFontRefFromFont' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
ATSFontRef atsFont = FMGetATSFontRefFromFont (font_id);
^
cairo-quartz-font.c:790:24: warning: 'CGFontCreateWithPlatformFont' is
deprecated: first deprecated in OS X 10.6 [-Wdeprecated-declarations]
CGFontRef cgFont = CGFontCreateWithPlatformFont (&atsFont);

❹ 解決conda環境中R包Cairo編譯失敗的問題

遇到問題:
configure: error: Cannot use cairo-ft backend, although cairo claims it is working. Please check your caito installation and/or update cairo if necessary or set CAIRO_CFLAGS/CAIRO_LIBS accordingly.
採用類似辦法:
conda install -c anaconda cairo
然而提示:

然後:
install.packages('Cairo')
還是報一樣的error
最終沒有解決,直接從別的環境中拷貝了Cairo的目錄過來

❺ 如何從android源碼中編譯webkit

android本來自帶了webkit瀏覽器,但是要對其進行custom就需要android源代碼才行, 但是在沒有源碼的情況下,那麼就需要用到ndk了,比如,我是在xoom上做custom webkit的。
1、雖然ndk提供的庫很少,而且沒有skia,但是好在有bitmap,這樣顯示慢了點,沒有硬加速,但不是不可能。
2、webkit需要的第三方庫,freetype,png,jpeg,sqlite3等雖然android源碼中有,但是ndk沒有開放,因此所有的第三方庫,freetype,png,jpeg,sqlite3,cairo,curl,fontconfig,pixman,iconv等都需要用ndk cross-compile成靜態庫,然後鏈接到最終的動態庫中。
3、選擇iconv是icu太大,而且沒有多語言的需求,選擇cairo+pixman是skia的移植性不好,而且cairo支持很多種backend。
4、編譯第三方庫需要用到autoconfig,ndk中有如何生成交叉編譯鏈的文檔,然後在configure時使用這個工具鏈就可以了,但是android用到的是bionic庫,因此會有很少的地方需要修改,有些庫也不能生成test程序,但是靜態庫是沒問題的。
5、利用ndk生成的交叉工具鏈,在加上webkit自帶的cmake編譯系統,生成webkit的動態庫是沒有問題的,當然是webkit的內核,而且有些平台相關的部分代碼需要修改。
6、但是只要是以linux平台為基礎,修改還是很容易的,我移植的webkit是先移植到linux平台上,然後移植到android平台上的,所以修改相對少了很多,但是修改大多都在WebCore/platform下,在選擇了的平台相關庫後,做相應的配置和修改。
7、其次是在WebKit目錄,這個主要是支持和使用WebCore,因此在需求不是整個瀏覽器,而只是正常地顯示網頁時,還是可以寫的比較簡單的。

❻ 有關ubunt8.04 64位的編譯環境

解決方法 首先搜一下看看有沒有rpm安裝包 ,沒有的話只能手動make了
你配置的這個東東我倒沒試過,看提示信息感覺是Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

環境變數沒設置好

那你就看看把PKG_CONFIG_PATH 先搞定嘍

查看一下當前的環境變數裡面是不是沒有PKG_CONFIG_PATH

good luck

❼ windows可以調用linux的靜態庫嗎

有源代碼 cygwin 或者 mingw 編譯吧。

因為 Linux 的程序文件架構格式叫做 ELF ,不是 Windows 的 PE 格式,他們的描述,程序、函數入口什麼的都不兼容,除非有橋接的介面轉換軟體,那麼他們不兼容的。
Linux 下面有 wine 這個應用介面模擬橋接的軟體,但 Windows 下面沒見過。

❽ 使用GTK+ 編寫的代碼,在編譯時使用 gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`

標准C的編譯是需要指定除libc之外的鏈接庫的。在gcc中,指定額外的庫通過-lxxx的參數實現(L的小寫),指定鏈接庫位置採用-Lxxx的形式實現,如果頭文件不是放到默認位置的話,需要-Ixxx來指定頭文件搜索路徑(i的大寫)。如果用到了POSIX多線程的話,要指定-pthread選項。
由於編譯GTK+程序所需要的連接的尋找的信息非常的多。非GTK+的開發者並不一定能夠正確的指定所有需要追加到gcc中的選項。所以GTK+利用了一個專門的工具來生成編譯GTK+程序所需要追加的選項,也就是pkg-config
pkg-config --cflags --libs gtk+-2.0的執行結果如下(環境是Qomo Linux 1.2)
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmole-2.0 -lgthread-2.0 -lrt -lglib-2.0
在bash編程中,用反引號引起的內容實際效果是將反引號中的命令執行,並將輸出結果作為腳本中的內容解釋執行。所以gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`實際上等價於
gcc base.c -o base -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmole-2.0 -lgthread-2.0 -lrt -lglib-2.0
也即指定了使程序可以正常編譯的選項。
pkg-config工具所生成的內容是在相關軟體包編譯時產生,放置在/usr/lib/pkgconfig目錄下,以xxx.pc的文本文件形式存在,實際上是一個解決軟體包之間編譯依賴關系的一個配置記錄工具。

❾ 我在windows下配置gtk後,寫程序是說找不到cairo.h,這是怎麼回事啊

在你的編譯上包含這個頭文件目錄
your_gtk_dir\include\cairo

熱點內容
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248
安卓微信刪除的好友怎麼找回 發布:2025-05-14 16:08:56 瀏覽:706
iphone的訪問限制密碼忘記了怎麼辦 發布:2025-05-14 16:08:56 瀏覽:184
php對象轉換成數組 發布:2025-05-14 16:07:55 瀏覽:27
java服務端緩存 發布:2025-05-14 15:53:37 瀏覽:105
php判斷postget 發布:2025-05-14 15:34:24 瀏覽:357
linux查看電腦配置 發布:2025-05-14 15:32:07 瀏覽:317