0
0

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 5 years have passed since last update.

Mojave で Fink によるビルドで readline8 に対処した例

Last updated at Posted at 2019-06-24

Fink では、すべてのリンクを確認してパッケージを作成しています

Fink は、複数バージョンの併用が可能です。たとえば、readline6 にリンクしてビルドしたい場合、一時的に readline7 のヘッダファイルを削除し、readline6 のヘッダファイルをインクルードしてビルドします。


Fink の R (r-base35-3.5.3-1) に、ビルド時のエラーが報告された。

making gramLatex.d from gramLatex.c
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c text.c -o text.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c init.c -o init.o
making gramRd.d from gramRd.c
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c Rmd5.c -o Rmd5.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c md5.c -o md5.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c signals.c -o signals.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c install.c -o install.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c getfmts.c -o getfmts.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c http.c -o http.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c gramLatex.c -o gramLatex.o
flag-sort -r gcc -ffor-scope -I"../../../../include" -DNDEBUG -I../../../include -I../../../../src/include -DHAVE_CONFIG_H -I../../../../src/main  -I/sw64/include   -fPIC  -g -O3  -c gramRd.c -o gramRd.o
flag-sort -r gcc -ffor-scope -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress ../../../../lib/libR.dylib -L/sw64/lib -o tools.so text.o init.o Rmd5.o md5.o signals.o install.o getfmts.o http.o gramLatex.o gramRd.o ../../../../lib/libR.dylib -lintl -Wl,-framework -Wl,CoreFoundation
mkdir ../../../../library/tools/libs
installing 'sysdata.rda'
dyld: Symbol not found: _rl_done
  Referenced from: /sw64/src/fink.build/r-base35-3.5.3-1/R-3.5.3/lib/libR.dylib
  Expected in: flat namespace
 in /sw64/src/fink.build/r-base35-3.5.3-1/R-3.5.3/lib/libR.dylib
/bin/sh: line 1: 26893 Done                    echo "tools:::sysdata2LazyLoadDB(\"./R/sysdata.rda\",\"../../../library/tools/R\")"
     26894 Abort trap: 6           | R_DEFAULT_PACKAGES=NULL LC_ALL=C R_ENABLE_JIT=0 TZ=UTC ../../../bin/R --vanilla --slave
make[4]: *** [sysdata] Error 134

エラーは、 _rl_done というシンボルがないというもので、見ているライブラリは libR.dylib。

$ cd /sw/src/fink.build/r-base35-3.5.3-2/R-3.5.3/src/library/tools/
$ grep -r readline *

tools というライブラリ自体は readline を使っていない。

R の configure では、readline を自動的に探す。この際、パス指定などはできない。このことから、readline が適切にリンクされていない可能性がある。そこで、readline8 を /usr/local にインストールしてみる。

$ cd ~/Download
$ curl -O ftp://ftp.cwru.edu/pub/bash/readline-8.0.tar.gz
$ tar -zxvf readline-8.0.tar.gz
$ cd readline-8.0
$ ./configure
$ make
$ sudo make install
$ ls /usr/local/lib/

readline8 がインストールされている。

では、あらためて r-base35 をビルドしてみる。たしかに、同じエラーが出た。

$ otool -L /sw/src/fink.build/r-base-3.5.3-1/R-3.5.3/lib/libR.dylib
/sw/src/fink.build/r-base-3.5.3-1/R-3.5.3/lib/libR.dylib
	libR.dylib (compatibility version 3.5.0, current version 3.5.3)
	/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
	/sw/lib/gcc5/lib/libgfortran.3.dylib (compatibility version 4.0.0, current version 4.0.0)
	/sw/lib/gcc5/lib/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
	/sw/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.5.0)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.95.0)
	/usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)
	/sw/lib/libpcre2-8.0.dylib (compatibility version 8.0.0, current version 8.1.0)
	/usr/lib/libpcre.0.dylib (compatibility version 1.0.0, current version 1.1.0)
	/sw/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.3.0)
	/sw/lib/libbz2.1.dylib (compatibility version 1.0.1, current version 1.0.6)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
	/sw/lib/libiconv.2.dylib (compatibility version 9.0.0, current version 9.0.0)
	/sw/lib/libicuuc.55.1.dylib (compatibility version 55.0.0, current version 55.1.0)
	/sw/lib/libicui18n.55.1.dylib (compatibility version 55.0.0, current version 55.1.0)

readline は、pcre2 の上あたりにあるはずだが、リンクされていない。

Fink では、リンクが適切にされるよう、フラグの並び方を調整している。この flag-sort が、Mojave の SDK を認識していなかったことが原因であった。

Fink 本体の開発者が、flag-sort の修正をして対応した。

現状、r-base35 は readline6 にリンクしています。 Fink には、 readline7 があるので、問題がなければ今後は readline7 に移行します。


今後、Mojave ユーザの方が /usr/local に readline8 などを入れいても、Fink でインストールするものは Fink の readline に適切にリンクされます

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?