アカウント名:
パスワード:
色々書いたり配布したりする人からすると、ABI変えられると厳しいですよね。Windowsと言うかMinGWのように基本Static Linkしてくれてるのはいいのですが、GNU/LinuxのようにDynamic Linkが基本だと、ABI変えられちゃうと、主要ディストリがStableでGCC5系を採用してくれないと、配布がしづらいですから。もしくは、ディストリごとに別々のバイナリを配布しなくちゃならなくなるので、サイトの容量が大きくないと厳しい。# いや、そんな言うならバイナリで配布すなと言われても、ソースコードだけでは怒り出す人達が結構いる状況だとねぇ…
C++なんぞ使っているから,ABIの変更に弱くなるのです
ABIを気にするなら1) 全部Cで書く2) APIはCで書いて,実装だけC++3) テンプレートライブラリ化して,ヘッダファイルだけのライブラリにするあたりが常套手段ですよ
実行前にチェックするようにできんの?と言ってみる。使えそうなら呼ぶ、使えなさそうならstaticな処理を呼ぶ。windowsでdll呼ぶときときやっただけなんで、同じ事出来るか分からん。。
.so に両方のライブラリを含めばよいような。実際にはどういう対応がされてるんでしょ?
_GLIBCXX_USE_CXX11_ABI パラメータでABI が切り替えられる。古いバイナリには古いABI で、新しくコンパイルする際には(デフォルトでは)新しいABI が使われる。.so には両方入ってます。
ありがとうございます。だとすると、インターフェースが変わらない前提でバイナリ(別ABIでコンパイルされたライブラリ)混在も動いたりするかな?
pUnkにしましょうぜ、増やしたりも簡単!
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
ABIかわっちゃった… (スコア:1)
色々書いたり配布したりする人からすると、ABI変えられると厳しいですよね。
Windowsと言うかMinGWのように基本Static Linkしてくれてるのはいいのですが、GNU/LinuxのようにDynamic Linkが基本だと、ABI変えられちゃうと、主要ディストリがStableでGCC5系を採用してくれないと、配布がしづらいですから。
もしくは、ディストリごとに別々のバイナリを配布しなくちゃならなくなるので、サイトの容量が大きくないと厳しい。
# いや、そんな言うならバイナリで配布すなと言われても、ソースコードだけでは怒り出す人達が結構いる状況だとねぇ…
Re:ABIかわっちゃった… (スコア:1)
C++なんぞ使っているから,ABIの変更に弱くなるのです
ABIを気にするなら
1) 全部Cで書く
2) APIはCで書いて,実装だけC++
3) テンプレートライブラリ化して,ヘッダファイルだけのライブラリにする
あたりが常套手段ですよ
Re: (スコア:0)
実行前にチェックするようにできんの?と言ってみる。
使えそうなら呼ぶ、使えなさそうならstaticな処理を呼ぶ。
windowsでdll呼ぶときときやっただけなんで、同じ事出来るか分からん。。
Re: (スコア:0)
.so に両方のライブラリを含めばよいような。
実際にはどういう対応がされてるんでしょ?
Re:ABIかわっちゃった… (スコア:1)
_GLIBCXX_USE_CXX11_ABI パラメータでABI が切り替えられる。
古いバイナリには古いABI で、新しくコンパイルする際には(デフォルトでは)新しいABI が使われる。
.so には両方入ってます。
Re: (スコア:0)
ありがとうございます。
だとすると、インターフェースが変わらない前提で
バイナリ(別ABIでコンパイルされたライブラリ)混在も動いたりするかな?
Re: (スコア:0)
pUnkにしましょうぜ、増やしたりも簡単!