タグ付けされた質問 「libraries」

ライブラリは、プログラムが使用できる機能の集まりです。これらはプログラムによって動的にロードすることも、プログラムにコンパイルすることもできます。



2
共有ライブラリが実行可能なのはなぜですか?
なぜほとんどすべての共有ライブラリに/usr/lib/実行許可ビットが設定されているのですか?それらを実行するためのユースケースは見当たりません。main短い著作権とバージョンノートを印刷するためになんらかの形式の関数を接続することもできますが、多くはそれを実行せず、実行時にセグメンテーション違反を起こします。 それで、これを設定する意味は何xですか?すべてのライブラリパッケージャーがそれを行う必要がありますか?権限dlopen()を持つ共有ライブラリを使用するとどうなり0644ますか?

2
/ usr / local / libの共有ライブラリを使用します
私はソースからいくつかのライブラリを構築しましたmake installが、その後のファイルは/usr/local/lib たとえば、私の場合libodb-2.2.so、このディレクトリにあるファイルがあります。 ただし、にリンクしている実行可能ファイルを起動するとlibodb、エラーが発生しました:共有ライブラリのロード中にエラーが発生しました:libodb-2.2.so: cannont open shared object file: No such file or directory. 実行可能ファイルを正しくビルドしていないということですか?または、フォルダにいくつかの興味深いライブラリがある可能性があることをシステムに示す必要がありますか/usr/local/lib? Ubuntu 12.04、Linuxカーネル3.2.0-38-genericを使用しています。
59 ubuntu  libraries 

1
lib、lib32、lib64、libx32、およびlibexecの違い
64ビットUbuntu 13.04システムには、次のディレクトリがあります/。 lib lib32 lib64 libx32 libexec では/usrディレクトリがあります: lib lib32 libx32 libexec これは検索で簡単に答えられるもののように思えましたが、これらのディレクトリに共有ライブラリ(libexecを除く)が格納されていること以外、オンラインでは何も見つかりませんでした。しかし、どの共有ライブラリがどのフォルダに配置されますか(lib32の32ビットとlib64の64ビット以外)?誰かがこれらすべてのディレクトリの違いを説明できますか?

1
共有ライブラリのロードとRAM使用量
Linuxが共有ライブラリを管理する方法について疑問に思っています。(実際、2009年にリリースされたDebianベースのディストリビューションである256MB RAMで実行されるMaemo Fremantleについて話しています)。 libQtCore.so.4にリンクし、そのシンボルを使用する(クラスと関数を使用する)2つの実行可能ファイルがあるとします。簡単にするために、それらをaおよびと呼びましょうb。両方の実行可能ファイルが同じライブラリにリンクすると仮定します。 最初に起動しaます。ライブラリをロードする必要があります。それは全体でロードされていますか、それとも必要な部分のみメモリにロードされていますか(各クラスを使用しないため、使用されたクラスに関するコードのみがロードされています) その後、起動しbます。aまだ実行されていると仮定します。blibQtCore.so.4にもリンクし、使用するクラスのa一部を使用しaますが、で使用されないクラスも使用します。ライブラリは、二重(別途ロードされますaと別途b)?または、すでにRAMにある同じオブジェクトを使用します。場合bの使用は新たなシンボルとaすでに実行されているRAMは、共有ライブラリの増加によって使用されていないのだろうか?(または、違いはわずかです)

4
Linuxライブラリ/実行可能バージョン情報の表示
Windowsでは、EXEおよびDLLには、少なくとも次のフィールドを含むバージョン情報があります。 ファイルバージョン 製品バージョン 内部名 商品名 著作権 Linuxライブラリ/実行可能ファイル: どのフィールドが存在しますか? そのような情報を表示するには? 読むべきツール/ライブラリは何ですか?

2
特定の実行可能ファイルのリンクライブラリを変更する(CentOs 6)
このようにリンクされた実行可能ファイルがあります: $ ldd a.out libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000) libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000) libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000) librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000) . . libcryptoおよびlibsslライブラリはopenssl 1.0.0-fips libsです。代わりに1.0.1ライブラリを試してみたいので、ホームディレクトリにビルドしました。a.out苦労せずに新しいopensslライブラリと再リンクする方法はありますか?避けたい 再リンクが必要a.out(ビルドツールは非常に複雑であるため) グローバル設定の変更(他の開発者がこのマシンで動作するため) ここで私が望んでいることをすることは可能ですか?
29 libraries  linker 

4
シェルからライブラリコマンドを実行する方法
文字列の長さ(ハッシュ値)を単純に計算したかったのです。だから、私はターミナルを開いてこれをしました: $ apropos length それは、それらの末尾に追加(3)または(3ssl)追加されたコマンド/関数の束で私を返しました。さて、man manはこれらのsection numbers意味についての情報を提供してくれます。 3 Library calls (functions within program libraries) 好奇心から、これらのすべてのコマンドを試してみました(少なくとも1つが機能することを願って) strcspn (3) - get length of a prefix substring strlen (3) - calculate the length of a string strnlen (3) - determine the length of a fixed-size string strspn (3) - get length of a …
27 shell  libraries 


1
リンクされたライブラリの必要なバージョンを見つけるまで、Unix / Linuxシステムがディレクトリを横断しないのはなぜですか?
リンクされたライブラリ(libz.so.1.2.7)を必要とする「alpha」という名前のバイナリ実行可能ファイルがあります。 /home/username/myproduct/lib/libz.so.1.2.7 次のコマンドを実行してバイナリ実行可能ファイルを生成する前に、同じものをターミナルインスタンスにエクスポートします。 export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH さて、同じライブラリを必要とするがバージョンが異なる別のアプリケーション「bravo」、つまりで使用可能な(libz.so.1.2.8)を生成すると /lib/x86_64-linux-gnu/libz.so.1.2.8、システムは次のエラーをスローします。 version `ZLIB_1.2.3.3' not found (required by /usr/lib/x86_64-linux-gnu/libxml2.so.2) の設定を解除するとLD_LIBRARY_PATH、「bravo」が正常に起動します。上記の動作は、リンクされたライブラリの検索中にLD_LIBRARY_PATH定義されたディレクトリパスよりも優先される/etc/ld.so.confため、上記のエラーが発生することを理解しています。ライブラリの最初のインスタンスが異なるバージョンである場合、UNIX / LINUXの開発者が、階層に従って他のディレクトリ内のリンクされたライブラリを検索するようにOSを設計しなかった理由に興味があります。 簡単に言えば、UNIX / LINUXシステムは、必要なライブラリが見つかるまで一連のディレクトリを走査します。しかし、バージョンに関係なくライブラリの最初のインスタンスを受け入れるのではなく、予想されるバージョンが見つかるまで同じことをしないのはなぜですか?

6
lddは、アプリが「動的実行可能ファイルではない」と言っています
天文学の教授から受け取った32ビットアプリケーション(uclsynと呼ばれる)があります。私は1年前にCentOSで実行することができましたが、今では新しいCentOS VMをセットアップしているときに実行されず、その理由がわかりません。「Kill​​ed」で戻ってきます。 これは、コマンドラインでの交換です。 $ ./uclsyn_linux Killed $ ldd ./uclsyn_linux not a dynamic executable $ file ./uclsyn_linux uclsyn_linux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 実行されるマシンでは、「ldd ./uclsyn_linux」は依存関係の全リストを返します。これらの共有ライブラリを提供するパッケージを見つけましたが、それらはすべてインストールされているようです。 必要なパッケージ libSM-1.1.0-7.1.el6.i686 libX11-1.3-2.el6.i686 libgcc-4.4.6-3.el6.i386 glibc-2.12-1.47.el6_2.9.i686 libuuid-2.17.2-12.4.el6.i686 libXau-1.0.5-1.el6.i686 また、アプリケーションにローカルなライブラリのヒープもありますが、これはチェック済みで既にインストールされています。 私の環境 VirtualBoxで実行されているCentOS uname -a:Linux …
17 centos  libraries 

3
gccはpthreadにリンクできませんか?
最近XUbuntu 11.10 64ビットをインストールしましたが、最も単純なpthreadの例をコンパイルするのに問題があります。 コードはpthread_simple.c次のとおりです。 #include <stdio.h> #include <pthread.h> main() { pthread_t f2_thread, f1_thread; void *f2(), *f1(); int i1,i2; i1 = 1; i2 = 2; pthread_create(&f1_thread,NULL,f1,&i1); pthread_create(&f2_thread,NULL,f2,&i2); pthread_join(f1_thread,NULL); pthread_join(f2_thread,NULL); } void *f1(int *x){ int i; i = *x; sleep(1); printf("f1: %d",i); pthread_exit(0); } void *f2(int *x){ int i; i = *x; …
17 c  libraries  gcc  xubuntu 

1
/ usr / lib64はどこに行き、/ usr / lib / x86_64-linux-gnuとは何ですか?
Ubuntu-x86_64システムが2つあります。1つはバージョン10.04、もう1つは12.04で、libディレクトリの構造に違いがあります。これは私を驚かせるものではありませんが、誰かがその理由を知っていれば興味があります。理由は何でしょうか? 10.04 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux /usr/lib /usr/lib32 /usr/lib64 12.04 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 GNU/Linux /usr/lib /usr/lib/x86_64-linux-gnu

2
ライブラリのロードをトレースするにはどうすればよいですか?
システムにインストールされているlibboost 1.67にリンクされているライブラリに依存するプログラムがあります。起動すると、libboost_system.so.1.58存在しないエラーが発生します。LD_PRELOADそしてLD_LIBRARY_PATH設定されていません。 lddtree実行では、このライブラリは依存関係として表示されませんが、表示されlddます。 ライブラリが必要な場所からどのようにトレースできますか?
16 libraries 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.