簡體   English   中英

ansi C程序中的直方圖功能:GSL和/或其他?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM