Linuxボックスで小さなc++プロジェクトを作成しました。-Iおよび_L、-lコマンドを使用して、コードを適切にコンパイルおよびリンクできます。
コードの実行中に、LD_LIBRARY_PATH変数に.soファイルへのパスが必要であることをネットで読みました。現在使用しているボックスは64ビットで、32ビットバージョンのライブラリを使用する別のアプリケーションがあります。したがって、LD_LIBRARY_PATHには、ライブラリの両方のバージョンへのパスがあります。
アプリケーションを実行しようとしたとき。./xyz arg1 arg2、次のエラーが発生します
./DaemonCpp: error while loading shared libraries: libldap.so: wrong ELF class: ELFCLASS32
これは、64ビットバージョンではなく32ビットバージョンを読み込もうとしているためだと思います。LD_LIBRARY_PATHにパスが記載されている順序を変更して、64ビットへのパスが最初になるようにしましたが、それでもこのエラーが発生します。ライブラリの64ビットバージョンを使用するようにアプリに指示する方法はありますか?
私の主な問題の2番目の質問として、c ++コードをリンクするときは、-Lを使用してライブラリパスを指定し、-lを使用してライブラリ名を指定します。そうすれば、実行可能ファイルを実行するときに使用するライブラリがわかっているはずであり、そもそもこのエラーが発生することはないはずです。