2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Linux使ってみて普及するわけないと思った時89

1 :login:Penguin:2016/10/30(日) 09:56:12.66 ID:mEpRJ6Ty.net
前スレ
Linux使ってみて普及するわけないと思った時88
http://hayabusa6.2ch.net/test/read.cgi/linux/1471413499/

今回もマック信者が憤死するの?

251 :login:Penguin:2016/11/10(木) 10:25:12.16 ID:Dny249wh.net
linuxのアプリは、
ダイナミックリンク設定(そういうオプションがあるもの)でビルドしても

「ビルド時のライブラリ」でないと動作しないんだよ


だから互換性があろうがなかろうが更新してしまうと一切動かない


linuxはスタティックとダイナミックの区別ができてない

252 :login:Penguin:2016/11/10(木) 10:34:57.55 ID:Dny249wh.net
GTK+とかGDとかQTとか使うもの、fontconfigとかもそうだが

とにかくすべて、ダイナミックリンク設定であるにもかかわらず

ライブラリを新しいもの、あるいは古いものに更新すると完全に動作しないか
文字が全部「□」になったりする


余計なことをしたかと思ってそれまで動いていたビルド設定(つまりOSがリリースされたときにある設定)
のファイルをそのまま使ってもムダ

「ライブラリに新機能追加や機能廃止があったからオプションにも変更ガー」
ねえよそんなもん
そんなモンとっくに調べてる


次のOSリリースでバージョンが新しくなっているにもかかわらず正常動作するから
設定ファイルやビルド設定に違いがあるのか見てみたら前バージョンとの差異は一切ない

つまり、「ファイルをそのまま使ってビルド試してみた」ときに動かないといけないはずなんだよな
ところが正常に動かなかった


スタティック設定でビルドし直すと正常

つまりダイナミックリンクが機能してないのだ


こんなだからlinuxは流行らない

253 :login:Penguin:2016/11/10(木) 10:47:17.66 ID:Dny249wh.net
Windowsの場合(例えばVC++ライブラリを使うもの)
 VC++2010ランタイムv1.0を前提にビルドする
 VC++2010ランタイムv1.1が出た
 そのままランタイムファイルを上書きする
 互換性が保証されている限りそのまま動作する


Linuxの場合 (例えばGTK2)
 GTK2ライブラリv1.0を使ってビルドする (ダイナミックリンク有効)
 GTK2ライブラリv1.1が出た
 そのままライブラリファイルを1.1に上書きする
 「GTK2library Wrong versionなんちゃら」とか出て動かない



「自分は何のライブラリバージョンでビルドされたか」を保持してるんだよな
linuxのアプリはすべて

これがおかしいっつの
ビルド時のバージョンでしか動かないってのはダイナミックリンクじゃねえじゃん

linuxのダイナミックリンクってのは
ファイルの置き場が違うだけのことかよ

たとえば自分の置かれてるフォルダと同じ所にライブラリファイルが置かれているのがスタティックで
/usr/binなどアプリ固有フォルダでないところにライブラリが置かれているのがダイナミックだと


ビルド時のバージョンでしか動かないならどこを見ようとも
それはダイナミックリンクではない

 

254 :login:Penguin:2016/11/10(木) 11:35:21.68 ID:yDRtJe9R.net
頭悪すぎて草

255 :login:Penguin:2016/11/10(木) 11:53:20.98 ID:yDRtJe9R.net
http://hayabusa6.2ch.net/test/read.cgi/linux/1466587869/216-

ライブラリを新しいもの、あるいは古いものに更新すると完全に動作しないか
文字が全部「□」になったりするのに10年前のfirefoxが今でも普通に動くのはなぜですか大先生!?!?

256 :login:Penguin:2016/11/10(木) 14:40:21.80 ID:lwOzdpXH.net
パッケージの依存情報にたとえばgtk1.0が必要と書いてある
それをgtk1.0のライブラリを1.1に上書きしてしまえばそりゃ動かなくなるがなw
普通は1.0と1.1のライブラリーは共存させるだろ
1.1が1.0と共存できないという場合(conflict)は1.1のパッケージを
インストールしようとすると1.0に依存するパッケージを削除しようとする
そこで通常ユーザーは1.1をインストールすることは問題であることに気づく
自分で1.1をmakeして1.0に上書きしてしまったときはアウトだけどな

257 :login:Penguin:2016/11/10(木) 14:47:49.00 ID:lwOzdpXH.net
普通Linuxのライブラリーはファイルの添字にバージョン番号を付けて
異なったバージョンでも共存できるようにしている。

258 :login:Penguin:2016/11/10(木) 15:54:18.74 ID:Dny249wh.net
ハナから1.0でしか動かないとあるなら話は分かるが

「それは元々ダイナミックリンクにふさわしくない」(1.0だけなのだから)

ので、ダイナミックリンクで動作するようなビルドオプションはないはずだ


ダイナミックリンクってのは、バージョンが変わったとしても
互換性がある限りは動くようにしたい、というものだろう

自分で持つのも何だから、共有ライブラリとしてあるものを使おうと

共有ということは「ユーザーは新しいものをインストールしないでずっと同じもの固定にしてくれる」
とは限らんわけだろ

それがLinuxではまったく働いてない

259 :login:Penguin:2016/11/10(木) 15:56:30.12 ID:lwOzdpXH.net
https://ja.wikipedia.org/wiki/DLL%E5%9C%B0%E7%8D%84

260 :login:Penguin:2016/11/10(木) 15:57:18.26 ID:Dny249wh.net
 

「ビルドしなおしガー」


それは動くんだけど

ダイナミックリンクじゃねえだろ


Windowsでいう、VBや.netで

バージョン変わったらビルドしなおしなんてクソアプリはない

1.1から2.0はともかく

総レス数 1000
311 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★