![](/img/trans.png)
[英]how to pass element of array as argument to function for it to modify, in ANSI C program?
[英]histogram function in ansi C program: GSL and/or others?
如果我只想使用Gnu Scientific Library(GSL)中的gsl_histogram.h
庫,我可以將它從安裝了GSL的現有機器(Mac OS Snow Leopard)復制到不同的機器(Linux CentOS 5.7)嗎?安裝了GSL,只在我的c程序中使用#include <gls_histogram.h>
語句? 這會有用嗎?
或者,我是否必須在Linux機器上完成GSL的全部安裝,即使我只需要這個庫?
僅復制標題gsl_histogram.h
是不夠的。 標頭僅表示此庫公開的接口。 您還需要復制像*.so
和*.a
文件這樣的二進制文件,但很難分辨哪些文件要復制。 所以我認為你最好將它安裝在你的機器上。 這很簡單,只需使用本教程來查找和安裝GSL包。
所以肯定有很多圖書館。 然而,特別的是Gnuplot。 使用它你甚至不需要編譯代碼,但是你需要閱讀一些文檔。 但幸運的是,關於如何在Stackoverflow上使用 Gnuplot繪制直方圖已經存在一個問題: 使用gnuplot進行直方圖? 值得注意的是,Gnuplot實際上是非常強大的工具,因此投入閱讀其文檔的時間肯定會得到回報。
您無法從操作系統中復制庫並期望它們保持不變。
OS X使用Mach-O目標文件格式,而現代Linux系統使用ELF目標文件格式。 通常的ld.so(8)
鏈接器/加載器將不知道如何加載Mach-O格式的目標文件以便執行可執行文件。 所以你需要Apple提供的ld.so(8)
- 或者他們稱之為裝載機的任何東西。 (有一陣子了。)
此外,OS X中的目標文件將鏈接到Apple提供的libc
,並需要Apple提供的庫中的相應符號。 您還需要在Linux系統上提供Apple提供的libc
。 此C庫將嘗試使用OS X系統調用號和調用約定進行系統調用。 我保證系統調用號碼已經改變,幾乎可以肯定調用約定是不同的。
雖然Linux內核的binfmt_misc
通用對象加載器可用於教內核如何加載不同的目標文件格式,而內核的personality(2)
系統調用可用於在不同的調用約定,系統調用號等之間進行選擇,完成這項工作所需的工作量是巨大的:自1993年以來, WINE項目一直致力於解決這個問題(但使用Windows格式的COFF和支持庫)。
它會更容易運行:
apt-get install libgs0-dev
或者等同於您選擇的分配。 如果您的發行版不易於使用,那么手動編譯和安裝庫仍然會更容易,而不是嘗試使OS X版本工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.