繁体   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