1

Gnu Scientific Library (GSL)のライブラリを使用したいだけの場合gsl_histogram.h、GSL がインストールされている既存のマシン (Mac OS Snow Leopard) から GSL がインストールされていない別のマシン (Linux CentOS 5.7) にコピーできますか? 、そして#include <gls_histogram.h>私のCプログラムでステートメントを使用するだけですか? これは機能しますか?

それとも、必要なライブラリは 1 つだけですが、Linux ボックスに GSL を完全にインストールする必要がありますか?

4

2 に答える 2

3

ヘッダーをコピーするだけgsl_histogram.hでは不十分です。ヘッダーは、このライブラリによって公開されるインターフェイスのみを示しています。*.soやファイルなどのバイナリもコピーする必要があり*.aますが、どれをコピーするかを判断するのは困難です。したがって、マシンにインストールするだけの方がよいと思います。とても簡単です。このチュートリアルを使用して、GSL パッケージを見つけてインストールするだけです。

そのため、確かに多くのライブラリが存在します。ただし、特定のものは Gnuplot です。これを使用すると、コードをコンパイルする必要さえありませんが、少しドキュメントを読む必要があります。しかし幸いなことに、Stackoverflow で Gnuplot を使用してヒストグラムを描画する方法についての質問が既にあります: gnuplot を使用したヒストグラム? Gnuplot は実際には非常に強力なツールであるため、時間をかけてドキュメントを読むことは確実に報われることは注目に値します。

于 2011-12-06T02:09:22.447 に答える
1

OS からライブラリをコピーして、それらが変更されずに動作することを期待することはできません。

OS X はMach-Oオブジェクト ファイル形式を使用しますが、最新の Linux システムはELFオブジェクト ファイル形式を使用します。通常のld.so(8)リンカー/ローダーは、実行可能ファイルを実行するために Mach-O 形式のオブジェクト ファイルをロードする方法を知りません。したがって、Apple が提供するld.so(8)もの、または彼らがローダーと呼んでいるものは何でも必要です。(お久しぶりです。)

さらに、OS X のオブジェクト ファイルは Apple 提供の に対してリンクさlibcれ、Apple 提供のライブラリから対応するシンボルが必要になります。libcLinux システムでApple が提供するものも提供する必要があります。この C ライブラリは、OS X のシステム コール番号と呼び出し規則を使用してシステム コールを作成しようとします。システム コール番号が変更され、呼び出し規約が異なることはほぼ確実です。

Linux カーネルのbinfmt_misc汎用オブジェクト ローダーを使用して、さまざまなオブジェクト ファイル形式をロードする方法をカーネルに教えることができます。また、カーネルのpersonality(2)システム コールを使用して、さまざまな呼び出し規約やシステム コール番号などから選択することができますが、必要な作業量はこれを機能させることは計り知れません。WINE プロジェクトは 1993 年以来、まさにこの問題に取り組んできました (ただし、Windows フォーマット COFF とサポート ライブラリを使用)。

実行する方が簡単です:

apt-get install libgs0-dev

または、選択したディストリビューションに同等のものがあります。ディストリビューションで簡単に利用できない場合でも、OS X バージョンを動作させるよりも、ライブラリを手動でコンパイルしてインストールする方が簡単です。

于 2011-12-06T02:21:24.697 に答える