ansi C程序中的直方图函数:GSL和/或其他?

ansi C程序中的直方图函数:GSL和/或其他?,c,histogram,gsl,C,Histogram,Gsl,如果我只想使用Gnu科学图书馆(gsl)中的gsl\u histogram.h库,我可以从现有机器(Mac OS Snow Leopard)复制它吗?该机器已将gsl安装到另一台没有安装gsl的机器(Linux CentOS 5.7)上,并且只需在我的c程序中使用\include语句即可?这样行吗 或者,即使我只需要这一个库,我也必须在Linux机器上完成GSL的完整安装吗?仅仅复制一个标题GSL\u直方图.h是不够的。Header仅表示此库公开的接口。您还需要复制像*.so和*.a文件这样的二

如果我只想使用Gnu科学图书馆(gsl)中的
gsl\u histogram.h
库,我可以从现有机器(Mac OS Snow Leopard)复制它吗?该机器已将gsl安装到另一台没有安装gsl的机器(Linux CentOS 5.7)上,并且只需在我的c程序中使用
\include
语句即可?这样行吗


或者,即使我只需要这一个库,我也必须在Linux机器上完成GSL的完整安装吗?

仅仅复制一个标题
GSL\u直方图.h
是不够的。Header仅表示此库公开的接口。您还需要复制像
*.so
*.a
文件这样的二进制文件,但很难判断要复制哪些文件。所以我认为你最好把它安装在你的机器上。这很简单,只需使用它来查找和安装GSL包


所以肯定有很多图书馆。然而,具体的一个是Gnuplot。使用它,您甚至不需要编译代码,但是您确实需要阅读一些文档。但幸运的是,关于如何在Stackoverflow上使用Gnuplot绘制直方图,已经存在一个问题:值得注意的是,Gnuplot实际上是一个非常强大的工具,因此花时间阅读它的文档肯定会有回报。

仅仅复制一个标题
gsl\u histogram.h
是不够的。Header仅表示此库公开的接口。您还需要复制像
*.so
*.a
文件这样的二进制文件,但很难判断要复制哪些文件。所以我认为你最好把它安装在你的机器上。这很简单,只需使用它来查找和安装GSL包


所以肯定有很多图书馆。然而,具体的一个是Gnuplot。使用它,您甚至不需要编译代码,但是您确实需要阅读一些文档。但幸运的是,关于如何在Stackoverflow上使用Gnuplot绘制直方图,已经存在一个问题:值得注意的是,Gnuplot实际上是一个非常强大的工具,因此花时间阅读它的文档肯定会有回报。

您不能从操作系统复制库,并期望它们能保持不变

OSX使用对象文件格式,而现代Linux系统使用对象文件格式。通常的
ld.so(8)
linker/loader将不知道如何加载Mach-O格式的对象文件以供可执行文件执行。因此,您需要苹果提供的
ld.So(8)
——或者他们称之为加载程序的任何东西。(已经有一段时间了。)

此外,来自OS X的对象文件将与苹果提供的
libc
链接,并需要苹果提供的库中的相应符号。您还需要在Linux系统上提供Apple提供的
libc
。这个C库将尝试使用OSX系统调用号和调用约定进行系统调用。我保证系统呼叫号码已经改变,几乎可以肯定的是,呼叫约定是不同的

Linux内核的
binfmt_misc
通用对象加载器可以用来教内核如何加载不同的对象文件格式,内核的
个性(2)
系统调用可以用来在不同的调用约定、系统调用号等之间进行选择,完成这项工作所需的工作量是巨大的:自1993年以来,政府一直在研究这个问题(但使用Windows格式的COFF和支持库)

这将更容易运行:

apt-get install libgs0-dev

或者在你的选择分布上的任何等价物。如果您的发行版不方便使用,那么手工编译和安装该库仍然比尝试使OS X版本正常工作更容易。

您不能从OS复制库并期望它们保持不变

OSX使用对象文件格式,而现代Linux系统使用对象文件格式。通常的
ld.so(8)
linker/loader将不知道如何加载Mach-O格式的对象文件以供可执行文件执行。因此,您需要苹果提供的
ld.So(8)
——或者他们称之为加载程序的任何东西。(已经有一段时间了。)

此外,来自OS X的对象文件将与苹果提供的
libc
链接,并需要苹果提供的库中的相应符号。您还需要在Linux系统上提供Apple提供的
libc
。这个C库将尝试使用OSX系统调用号和调用约定进行系统调用。我保证系统呼叫号码已经改变,几乎可以肯定的是,呼叫约定是不同的

Linux内核的
binfmt_misc
通用对象加载器可以用来教内核如何加载不同的对象文件格式,内核的
个性(2)
系统调用可以用来在不同的调用约定、系统调用号等之间进行选择,完成这项工作所需的工作量是巨大的:自1993年以来,政府一直在研究这个问题(但使用Windows格式的COFF和支持库)

这将更容易运行:

apt-get install libgs0-dev

或者在你的选择分布上的任何等价物。如果您的发行版不方便使用,那么手工编译和安装该库将比尝试使OS X版本正常工作更容易。

感谢初学者,这就是我需要知道的。关于第二个问题,我会更新上面的帖子。谢谢初学者,这是我需要知道的。关于第二个问题,我会更新上面的帖子。我只是在更新我的答案。过来看!我只是在更新我的答案。过来看!