掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.28724

ライブラリについて
投稿者---なゆた(2006/11/04 23:07:03)


ライブラリのリンクに関する質問です。

gccで作ったライブラリを他のコンパイラ、たとえばインテルのコンパイラなどで用いる事に関しては問題ないのでしょうか。
問題があるとすればどういう場合でしょうか。

GNU scientific libraryなどの数学ライブラリがgccでコンパイルされているときに
インテルコンパイラなどのほかのコンパイラでそのライブラリを用いることを想定しています。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ライブラリについて 28725 YuO 2006/11/04 23:28:08


No.28725

Re:ライブラリについて
投稿者---YuO(2006/11/04 23:28:08)


>gccで作ったライブラリを他のコンパイラ、たとえばインテルのコンパイラなどで用いる事に関しては問題ないのでしょうか。
>問題があるとすればどういう場合でしょうか。

基本的に,「できない」と思ってください。

ライブラリファイルは中間ファイル (.objだの.oだの) をより集めた物なので,他のコンパイラで利用するには
・ライブラリファイル自体のファイル形式
・中間ファイルのファイル形式
が一致している必要があります。


この投稿にコメントする

削除パスワード

No.28727

Re:ライブラリについて
投稿者---なゆた(2006/11/05 00:01:52)


返信ありがとうございます。

それでは、自分以外の人間が管理しているコンピュータでgslなどの数学ライブラリを用いて計算する場合は、
管理者にどのコンパイラを用いてライブラリをコンパイルしたかを聞いて、そのコンパイラを用いてプログラムを
コンパイルしたほうがよろしいのでしょうか。

あと、gccでコンパイルされているgslをインテルのコンパイラを用いて計算してみたところ、計算結果に問題が
なかったのは偶然だったということでしょうか。


この投稿にコメントする

削除パスワード

No.28747

Re:ライブラリについて
投稿者---yoh2(2006/11/05 14:13:20)


>あと、gccでコンパイルされているgslをインテルのコンパイラを用いて計算してみたところ、計算結果に問題が
>なかったのは偶然だったということでしょうか。

基本的にはYuOさんの書き込みの通りですが、コンパイラによっては互換性を持って
いることもあります。
例えば、Linuxではgccでコンパイルされたライブラリをインテルのコンパイラで
利用することも、その逆も可能です。
この辺はマニュアルや仕様書を見れば書いてありますので、それを調べて判断しましょう。

また、これと逆パターンで、同じコンパイラでもバージョン違いで互換性がない場合もあります。
これまたgccを例に挙げると、2.x->3.0、3.3->3.4でC++をコンパイルしたバイナリの
互換性が失われています。
これも合わせて考えると、コンパイラ関のバイナリ互換性を調べる場合は、どのバージョンの
コードと互換性があるかまで気にする必要があります。


この投稿にコメントする

削除パスワード

No.28766

Re:ライブラリについて
投稿者---なゆた(2006/11/06 19:43:54)


返事が送れてすみません。

yoh2さんの返事にあったとおり、マニュアルや仕様書をよく読んでみます。

あと、もうひとつ質問なのですが、
gslをgccでコンパイルしたものをg++、つまりC++で用いても問題ないのでしょうか。
(マニュアルにはC++から呼び出された場合はextern Cがつくので問題ないとは書いてあります。)
また、このようにCのコンパイラでコンパイルされたライブラリをC++から呼び出す場合には特に問題はないのでしょうか。


この投稿にコメントする

削除パスワード

No.28771

Re:ライブラリについて
投稿者---yoh2(2006/11/07 02:37:25)


>gslをgccでコンパイルしたものをg++、つまりC++で用いても問題ないのでしょうか。
>(マニュアルにはC++から呼び出された場合はextern Cがつくので問題ないとは書いてあります。)

extern "C" が付いた宣言が、C++がCの作法で関数を呼び出す/呼び出されるようにすると
いった意味ですので問題ありません。(まあ、extern "C"が付くのは関数に限りませんが)

もちろん、ライブラリのバイナリ互換性があるというのが前提条件になりますが。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧