3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Big Surでライブラリのパスが通ってなくてコンパイルエラーが出る

Last updated at Posted at 2020-12-27

環境

  • macOS Big Sur 11.1
  • MacBook Air (M1, 2020)
  • Command Line Tools 12.3
  • Rosetta 2 使用
  • homebrewで入れたgcc (gfortran)

2021年1月20日 追記

研究用で新しくMacbook Airを買ってgfortranでコンパイルしてみたら
下記のパスのエラーは起こらなかった.LAPACKも特に何もしなくても-llapackで問題なく使える.

コンパイルエラー

gfortranを使ってfortranのプログラムをコンパイルしようとしたら下記のエラー

ld: library not found for -lSystem

この辺りをみると
https://community.intel.com/t5/Intel-Fortran-Compiler/New-macOS-Big-Sur-return-quot-ld-library-not-found-for-lSystem/m-p/1228382/highlight/true?profile.language=ja

Big Surではなぜかライブラリにパスが通ってないらしい.gfortranだけではなくgccなどでも同じエラーが出る.
めんどくさいが,コンパイルするときにライブラリのパスを指定する.

-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib

これでコンパイルできた.

LAPACK

MacではBLASやLAPACKはデフォルトでAccelerate frameworkに含まれていて,これまでのMac OSでは確か何もしなくてもデフォルトでパスが通ってLAPACKなどが使えたはず.Big Surでは上記問題で

-llapack

だけではコンパイルできなかった.

-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -llapack

パスを指定すればLAPACKが使えてコンパイルが通った.

ライブラリの実態?

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/libを調べてみるとliblapack.tbdというファイルがあって中身を見ると,

install-name:    '/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib'

ライブラリが置いてある実際の場所が書いてある.この場所を見に行ってみてもlibLAPACK.dylibというライブラリが見つからない.Big Surより前のOSでは確かにこの場所にLAPACKとかBLASのライブラリが置いてある.以前のOSではそれらのライブラリのシンボリックリンクが/usr/libに置いてあった./usr/libは何も設定しなくてもライブラリを読みに行ってくれるディレクトリだったはず.

Big Surでライブラリファイルが見つからないのになぜかコンパイルはうまく行って,できた実行ファイルをotool -Lで調べてみると下記のlibLAPACK.dylibがリンクされている.

/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

ファイルがないのにちゃんと動いているのが謎.

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?