メインコンテンツに移動

MySQL++

MySQL++パッケージのインストール

まずMySQL/Connector Cをインストールする.

で,gettextパッケージをインストールする.

で,ここの新げなmysql++-3.xxxパッケージをインストールすれば使える. 

エラーする場合, MySQL/Connector Cを正しく行なったか,確認せよ,

MySQL++パッケージの作成

上記インストールで配布しているパッケージを,大変暇だというわけで,わざわざ自分で作ってみたい場合,次のように行う.

Version 3.3.0 台湾積体電路製造

Version 3.2.Xが最近のOSではビルドしないのでバージョンアップ

X86ビルド

X86ターミナルで実行する.

$ cd mysql++-3.3.0
$ ./cofnfigure
$ mv version version.bad   <--- こいつがあるとビルドしない
$ make
$ lipo -info libmysqlpp.3.3.0.dylib
Non-fat file: libmysqlpp.3.3.0.dylib is architecture: x86_64
$ otool -L libmysqlpp.3.3.0.dylib
libmysqlpp.3.3.0.dylib:
    /usr/local/lib/libmysqlpp.3.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
    /usr/local/lib/libintl.8.dylib (compatibility version 11.0.0, current version 11.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)

おう.今回は普通にできたぞ.

ARM64ビルド

ARM64ターミナルで実行する

$ cd mysql++-3.3.0
$ ./cofnfigure
$ mv version version.bad   <--- こいつがあるとビルドしない
$ make
$ lipo -info libmysqlpp.3.3.0.dylib
Non-fat file: libmysqlpp.3.3.0.dylib is architecture: arm64
$ otool -L libmysqlpp.3.3.0.dylib
libmysqlpp.3.3.0.dylib:
    /usr/local/lib/libmysqlpp.3.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
    /usr/local/lib/libintl.8.dylib (compatibility version 11.0.0, current version 11.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
$ fswatch -x /usr/local/ > files.log &
$ sudo make install
$ kill %1
$ fswatch_analyze.sh -c _binary files.log

豚ビルド

$ mkdir arm64
$ cp libmysqlpp.3.3.0.dylib arm64
$ mkdir x86_64
$ cp ../../x86_64/mysql++-3.3.0/libmysqlpp.3.3.0.dylib x86_64
$ echo libmysqlpp.3.3.0.dylib|fatty_apple.sh arm64 x86_64 uni
$ cp uni/libmysqlpp.3.3.0.dylib _binary/usr/local/lib
$ pkgbuild --identifier mysql++ --root _binary mysql++-3.3.0-osx12.4.pkg

Version 3.2.5 台湾積体電路製造

X86ビルド

X86ターミナルで実行する.

cd mysql++-3.2.5
./cofnfigure
make
lipo -info *dylib
Non-fat file: libmysqlpp.3.2.5.dylib is architecture: x86_64
Non-fat file: libmysqlpp.3.dylib is architecture: x86_64
Non-fat file: libmysqlpp.dylib is architecture: x86_64

ARM64ビルド

ARM64ターミナルで実行する

cd mysql++-3.2.5
./cofnfigure
make
lipo -info *dylib
Non-fat file: libmysqlpp.3.2.5.dylib is architecture: arm64
Non-fat file: libmysqlpp.3.dylib is architecture: arm64
Non-fat file: libmysqlpp.dylib is architecture: arm64
fswatch -x /usr/local/ > files.log
sudo make install

豚ビルド

それでは豚に変更しよう.

mkdir ../universal
fatty_apple.sh ../../x86_64/mysql++-3.2.5/ . ../universal/ libmysqlpp*dylib
Architectures in the fat file: ../universal//libmysqlpp.3.2.5.dylib are: x86_64 arm64
Architectures in the fat file: ../universal//libmysqlpp.3.dylib are: x86_64 arm64
Architectures in the fat file: ../universal//libmysqlpp.dylib are: x86_64 arm64
sudo cp ../universal/* /usr/local/lib
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier mysql++ --root _binary mysql++-3.2.5-osx11.2.pkg

あれ. このままでは動作しないな.libmysqlclient.dylib の場所がわからないみたいだ.

手動書き換えプラン

otool -L ../../x86_64/mysql++-3.2.5/libmysqlpp.dylib
/usr/local/lib/libmysqlpp.3.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.3.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 904.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)
otool -L ../../arm64/mysql++-3.2.5/libmysqlpp.dylib
/usr/local/lib/libmysqlpp.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 904.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

なんかlibintlがあったりなかったりで妙ではあるが, それはそれ. armにだけ@rpath が残ってしまっている.面白いから書き換えてみる:

install_name_tool -change "@rpath/libmysqlclient.21.dylib" "/usr/local/mysql/lib/libmysqlclient.18.dylib" libmysqlpp.3.2.5.dylib

できたかな:

otool -L libmysqlpp.dylib
/usr/local/lib/libmysqlpp.3.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 21.0.0, current version 21.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 904.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

よっしゃ.

fatty_apple.sh ../../x86_64/mysql++-3.2.5/ . ../universal/ libmysqlpp*dylib
pkgbuild --identifier mysql++ --root _binary mysql++-3.2.5-osx11.2.pkg

ううんだめだ.少なくともXCodeではビルドしないな・・・

おや.手動でinstall_namesを書き換えたバージョンはビルドしない.何か間違っているんだなあ.libmysqlclientがrpathのまま残っているものについては, DYLD_LIBRARY_PATHを直せば動作はする.つまり手動書き換えプランはダメなんだね.こっちを訂正して逃げることにする.

Version 3.2.5

cd mysql++-3.2.5
./cofnfigure
fswatch -x /usr/local > files.log &
make install
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier mysql++ --root _binary mysql++-3.2.5-osx10.15.pkg

Version 3.2.2

cd mysql++-3.2.2
./cofnfigure
fswatch -x /usr/local > files.log &
make install
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier mysql++ --root _binary mysql++-3.2.2-osx10.10.pkg