問題タブ [libc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1754 参照

glibc - Gentoo に glibc 2.3.2 をインストールするには?

アプリケーションを作成し、Gentoo で実行する必要がありますが、実行しようとすると、次のメッセージが表示されます。

/lib/libc.so.6: バージョン `GLIBC_2.3.4' が見つかりません (/usr/local/myapp/lib/myapplib.so.1 で必要)

このgentooの現在のGLIBCバージョンは2.3.2です。

権限がないため、この glibc を更新できません。そのため、glibc を同じバージョン (2.3.2) に「ダウングレード」する必要があります ... どうすればよいですか?

わかりました、

0 投票する
1 に答える
582 参照

c - container_of が glibc にないのはなぜですか?

libc/glibc で container_of() が受け入れられない可能性がある技術的な理由はありますか?

ありがとう、チェンツ

0 投票する
1 に答える
114 参照

native - ネイティブ プログラムを直接実行すると正常に動作するのに、コンドル経由で送信するとセグ フォールトで失敗するのはなぜですか?

シミュレーションに取り込もうとしているサードパーティのライブラリがあります。静的ライブラリ (.a) と、そのすべてのランタイム依存関係 (共有オブジェクト) があります。ライブラリにリンクされた非常に単純なアプリケーション (C 言語) を作成しました。サードパーティ ライブラリの API の一部である初期化関数を呼び出して終了するだけです。これをコマンドラインから直接実行すると、正常に動作します。実行可能ファイルをコンドル グリッドに送信すると、strncpy (libc.so.6) でセグ フォールトが発生して失敗します。特定のマシンでのみ実行可能ファイルを実行するようにコンドルを強制しました。そのマシンで直接実行すると、問題なく動作します。

私は主に Java プログラマーです... ネイティブ コーディングの経験は限られています。私は、nm、ldd、catchsegv などのツールに精通しており、それらを実行できるようになっています。しかし、どこから問題を探し始めたらよいかわかりません。

ldd を実行中のマシンで直接実行し、condor から送信されたスクリプトを介して実行可能ファイルと共に実行しました。ldd は、どちらの場合も同じファイルを報告します。

直接実行する方法はわかりませんが、コンドルで実行すると失敗します。プログラムを最終的に実行するプロセス、condor_startd は、root として開始し、その有効な uid をサブミッターに変更するプロセスです。もしかしてこれが何か関係あるの?

0 投票する
1 に答える
4070 参照

shared-libraries - どのようにLibc共有ライブラリがメモリにロードされ、プロセス間で共有されますか?

Libc共有ライブラリがメモリにロードされ、プロセス間で共有される方法を理解したいですか? メモリにロードされ、すべてのプロセス間で共有される1つのlibcインスタンスがありますか、それともプロセスごとにメモリ内の各libcインスタンスですか。libc がプロセス間でどのように共有されているかは不明です。

ありがとうアディティア

0 投票する
3 に答える
3007 参照

linux-kernel - 多くのシステム コール (getpid) が strace を使用して 1 回だけキャプチャされるのはなぜですか?

(システム コールの効率をテストするために) プログラムでgetpid()を何度も呼び出しましたが、トレースを取得するために使用するstraceと、getpid()呼び出しが 1 回だけキャプチャされます。

コードは簡単です:

私はこれを使用gdbして取得しました:

アセンブリコードがよくわかりません。また、どなたか詳しい説明をいただけると助かります。私の観察によると、最初のgetpid()呼び出しを除いて、「call *%gs:0x10」(vdso にジャンプする) は実行されません。これが、後続のgetpid()呼び出しがキャプチャされない理由である可能性があります。しかし、理由はわかりません。

Linux カーネル: 2.6.24-29 gcc (GCC) 4.2.4 libc 2.7、

ありがとう!

0 投票する
1 に答える
533 参照

c - libcに新しい関数を追加する

新しいlibc関数を追加し、Cプログラムから呼び出すにはどうすればよいですか?新しい関数は、カーネルレベルのシステムコールのラッパーではありません。その機能はユーザースペースで実行されます。

0 投票する
1 に答える
186 参照

gcc - libcライブラリでコンパイルする

ここで説明するコードでstricmp()を使用しました

コンパイルエラーundefined reference tostricmp'`が発生します。

-cオプションを指定してlibcライブラリでコンパイルする方法は?

0 投票する
4 に答える
1294 参照

c++ - libcはどのように機能しますか?

私はMIPS32エミュレーターを作成しており、gccを使用してCプログラムをコンパイルするときに、標準Cライブラリ全体(おそらくGNU拡張機能を使用)を使用できるようにしたいと考えています。

この時点で理解しているように、I/OはMIPS32アーキテクチャ上のシステムコールによって処理されます。libc / glibcを使用してプログラムを正常に実行するには、どのsyscallをエミュレートする必要があるかをどのように判断できますか?(試行錯誤なし)

編集:システムコールの意味の例については、これを参照してください。

(興味があれば、ここでプロジェクトをチェックできます。フィードバックは大歓迎です。非常に初期の段階であることに注意してください)

0 投票する
1 に答える
2128 参照

glibc - glibc と「libc」のバージョンを関連付ける方法は?

realpath私のLinuxボックスのmanページには次のように書かれています:

それはどういう意味ですか?どのlibcを参照していますか-「Linux libc」? - また、さまざまな libc フレーバーに一致するリストはどこにありますか?この関数や他の関数にリンクするための最小要件を確認できますか?

GLIBC のバージョンは 2.13 で、4.5.21 よりかなり低いですが、glibc に関するウィキペディアのページには次のように書かれています。

1990 年代初頭、Linux カーネルの開発者は glibc をフォークしました。「Linux libc」と呼ばれる彼らのフォークは、何年もの間別々に維持され、バージョン 2 から 5 がリリースされました。

... と

Linux libc の最後に使用されたバージョンは、内部名 (soname) libc.so.5 を使用していました。これに続いて、Linux の glibc 2.x は soname libc.so.6 を使用します。

これは、どの glibc もメジャー バージョンが 5 を超える「Linux libc」と同等であることを意味しますか?

これまたはそのバージョンの "libc" を参照しているマニュアル ページは他にもあるため、これらrealpathは問題全体の 1 つの例にすぎません。

注:私が構築しているコードはLinuxに限定されていません。そのため、特定の機能が利用可能かどうかを検出する明確な方法が必要です。

0 投票する
4 に答える
3607 参照

c - なぜ「errno」を使用するのですか?

私はTechnionのCS学生ですが、errno変数とcスタイルの関数呼び出しについて学びました。これは、cスタイルのシステムコールがレジスタを使用して値を返す場合、なぜ誰かが使用する必要があるのか​​疑問に思いerrnoます。