4

MVTec Halcon 11 を Ubuntu で動作させるのに苦労しています。すべてが適切な場所にありますが、プログラムは画像取得に必要な動的ライブラリを認識していません (カメラのみが正常に動作し、ドライバーがインストールされています)。

ライブラリのパスを追加して/etc/ld.so.conf実行しましldconfig -vたが、ディレクトリに存在する 28 個のファイル (すべて「共有ライブラリ」タイプと .so 拡張子) のうち、「lib*.so」ファイルのみがリンクされています。実際のところ、ldconfig の出力に含まれるすべてのライブラリは lib*something と呼ばれます。

奇妙なことに、ファイル名の前に「lib」を追加すると、ファイルがリンクされます (もちろん、ソフトウェアでは問題ありません)。

何故ですか?

4

1 に答える 1

4

ld.so と ld-linux.so の男より

セクション ファイル :

lib*.so* 共有ライブラリ

そして glibc (./elf/ldconfig.c) から:

 712       /* Does this file look like a shared library or is it a hwcap
 713          subdirectory?  The dynamic linker is also considered as
 714          shared library.  */
 715       if (((strncmp (direntry->d_name, "lib", 3) != 0
 716             && strncmp (direntry->d_name, "ld-", 3) != 0)
 717            || strstr (direntry->d_name, ".so") == NULL)
 718           && (
 719 #ifdef _DIRENT_HAVE_D_TYPE
 720               direntry->d_type == DT_REG ||
 721 #endif
 722               !is_hwcap_platform (direntry->d_name)))
 723         continue;

lib で始まる名前を選択する必要があるようです... libc はこれを使用して、ファイルが共有ライブラリであるかどうかを判断します。

于 2012-08-07T09:59:12.760 に答える