【初心者】Ubuntu Linux 126【本スレ】 (473レス)
上下前次1-新
341: 05/24(日)16:42 ID:SooJXv0m(8/8) AAS
gcc でプログラムをコンパイルする場合、ソースやヘッダで関数が複数回定義されることがあります。
昔は -z muldefs というオプションをつけると、一応はコンパイルが通りました。これは現在でも有効な手法でしょうか?
結論から申し上げますと、-z muldefs (または --allow-multiple-definition)は、現在でも GCC(正確にはGNUリンカ ld)のオプションとして有効であり、機能します。
しかし、現代のソフトウェア開発においては、これを常用することは「非常に非推奨な、避けるべき禁じ手(最終手段)」とされています。
その理由と、現在推奨されている正しい対処法を解説します。
1. 現在でも有効だが「非推奨」とされる理由
このオプションは、重複した定義のうち「最初に見つかったもの」を優先し、残りを無視して無理やりリンクを通すものです。
これが危険とされるのには、現代のコンパイラ最適化の進化が絡んでいます。
未定義動作(Undefined Behavior)の誘発
C/C++の標準規格(One Definition Rule / 単一定義規則)では、外部結合を持つ関数や変数の重複定義は認められていません。
省8
342: 05/24(日)17:00 ID:1gte/+w4(1) AAS
26.04にアップグレードしたらWinhqやら特定のdotnetのバージョンやらpythonのvenvのpipやらが無効にされてて草ww
343(1): 05/24(日)17:07 ID:/HMxfP7H(2/2) AAS
resoluteからpython3.14じゃなかった
344: 05/24(日)23:29 ID:xVgLkJZg(1) AAS
OSアップグレードは昔から鬼門だからね。下手にあれこれ手を加えるくらいなら新規インストールした方がよい
345: 05/25(月)00:54 ID:Aw4h7Iui(1) AAS
実験的にアップグレードかましたこともあるけど
使うのはずっと新規インストールだな
GWあたりからじっくり整える作業するのがむしろ毎回楽しい
346: 05/25(月)07:32 ID:1Rmkr/oD(1) AAS
>>343
phyだけに3.14
347: 05/25(月)13:31 ID:xlzpoX3a(1/8) AAS
>>330
すごく古いOSに入れるという話じゃなければ
./rebuild -j4
sudo ./install
で普通に入るでしょ?
エラーが出たらAIに放りこめばパッケージを追加とかaptコマンド付きで丁寧に教えてくれる
数十行でキレる人間と違って何百行でも入れて聞けばいい
ダウンロードとか日本語名のフォルダでbuildするとエラーが出るけどAIは馬鹿にせず指摘してくれる
画像、音声出力先がないのにbuildが通ってしまうことがあるけど、それも訊けば追加パッケージを教えてくれる
348(2): 05/25(月)17:00 ID:camTiaOX(1/6) AAS
やはりそれだと、scripts/mpv-install: 5: meson: not found で止まる
pipでmesonは入ってる状態
349: 05/25(月)17:26 ID:klR0Al0b(1/3) AAS
スクリプト
メソンをフルパスで指定したらいいんじゃね?
350(1): 05/25(月)17:43 ID:1KdZNzDv(1/6) AAS
そもそもmpvをビルドからしなきゃならん理由がよく分からんけどね。aptじゃ駄目なの?
351(1): 05/25(月)17:50 ID:camTiaOX(2/6) AAS
ビルドは必要に迫られてだよ
割と頻繁に更新するyt-dlp, ffmpeg, mpv関連はaptから排除して使いたい
352: 05/25(月)17:51 ID:klR0Al0b(2/3) AAS
> pipでmeson
$ sudo apt install meson
でどう?
353: 05/25(月)17:53 ID:xlzpoX3a(2/8) AAS
>>348
sudo apt install mesonで入れたからか普通にbuild出来たよ
PATHを通せないならPIP版は消してaptで入れ直してみては
>>350
結構時間がかかかるし依存ライブラリも多いのでそのほうが楽だろうね
何を変えたいんだろう?
354: 05/25(月)17:57 ID:xlzpoX3a(3/8) AAS
すまん
もたもた書いてたら両方被った
>>351
yt-dpl以外は最新である必要ある?
355: 05/25(月)18:00 ID:a8gYl2fB(1/2) AAS
今どきビルドしなきゃならんrustのクレートくらいやろ
archでゆうignorepkgみたいな更新のときにパッケージを除外してくれるやつあるやろ
356: 05/25(月)18:08 ID:klR0Al0b(3/3) AAS
apt-mark hold
357: 05/25(月)18:16 ID:camTiaOX(3/6) AAS
aptでmesonとninja-build入れたら普通にビルドできました
pip installが原因だと判明したのは収穫でした
apt-mark holdはsnap完全除去で駄目押し的に使ってる
meson --version; ninja --version
1.10.1
1.13.2
358: 05/25(月)18:22 ID:1KdZNzDv(2/6) AAS
ninjaはビルド高速化ツールだから、多分無くてもできるかと。まあ、早いに越したことはないね。pythonのバージョンは3.14でやるとトラブル少ない。既存のmakeはそのあたりをターゲットに構築されている場合が多いから。とはいえそれも今だけの話だけど
359: 05/25(月)18:25 ID:a8gYl2fB(2/2) AAS
てかpip遅いしだるいから今時はuv
360: 05/25(月)18:28 ID:1KdZNzDv(3/6) AAS
ubuntu 26.04ではpythonのデフォが3.17だから、このあたりの差分が顕著に表面化する時期なんじゃないかな
上下前次1-新書関写板覧索設栞歴
あと 113 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.009s