問題タブ [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 に答える
2594 参照

c - システムの標準Cライブラリ関数の実装はどこにありますか?

たとえば、strrev()関数。string.hで宣言されていることを知っているので、どのように実装されているかを知りたいと思います。では、ソースコードはどこにありますか?

OS:Windows XP SP3
IDE:Pelles C 6.50 RC3

0 投票する
0 に答える
39385 参照

gcc - gcc: 数学ライブラリをリンクするために -lm フラグが必要なのはなぜですか?

-lm数学ライブラリの関数を参照するプログラムをコンパイルするために、gcc でフラグが必要であることを発見しました。time ライブラリなどの他のライブラリを含むプログラムをコンパイルするときに、なぜ明示的なリンク フラグが必要ないのか疑問に思っています。関数が呼び出されるプログラムを作成するtime()と、リンク オプションがなくても問題なくコンパイルされます。しかし、数学ライブラリが関係するプログラムは、-lmフラグなしでは機能しません。

誰でもこの動作の背後にある理由を説明できますか? 御時間ありがとうございます。

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

c - Unix上のIsBadReadPtrアナログ

UnixのIsBadReadPtrに類似した関数はありますか?IsBadReadPtrの少なくともいくつかの機能?SIGSEGVプロセス(など)に何か悪いことが起こった場合に反応し、いくつかの情報を回復するプロシージャを作成したいと思います。ただし、ポインタをチェックして、データが破損していないことを確認し、安全にアクセスできるかどうかを確認したいと思います。そうしないと、クラッシュ処理手順自体がクラッシュし、役に立たなくなります。

助言がありますか?

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

embedded - カスタム ARM セットアップへの newlib の移植

これは私の最初の投稿であり、約 1 年間取り組んだりやめたりしようとしてきたことをカバーしています。

基本的には、次のように要約されます: LPC2388 (NXP の ARM7TDMI) で動作させようとしている newlib のコピーがあります。これは、arm-elf-gcc を使用する Linux ボックス上にあります。

私が持っている質問は、newlib の移植について話している多くのチュートリアルを見てきたということです。それらはすべてスタブ (exit、open、read/write、sbrk など) について話しているので、かなり良い考えを持っています。これらすべての機能を実装する方法。しかし、どこに置くべきですか?

私は、sources.redhat.com/pub/newlib/newlib-1.18.0.tar.gz から newlib ディストリビューションを入手しました。 arm) には、更新する必要があるすべてのスタブが含まれていますが、それらはすべてかなり完成した外観のコードで埋められています (これは、crt0.S なしでは機能しないようで、それ自体は私のチップでは機能しません)。

これらの関数を自分で一掃して、書き直すべきですか?それとも別の場所に書くべきですか?「アーキテクチャ」の名前で newlib/libc/sys にまったく新しいフォルダーを作成し、ターゲットを一致するように変更する必要がありますか?

このようなものをオープンソースプロジェクトとしてリリースした後、配布する際の適切なエチケットがあるかどうかも興味があります。現在、binutils、arm-elf-gcc、newlib、および gdb をダウンロードしてコンパイルするスクリプトがあります。newlib ディレクトリにあるファイルを変更する場合、スクリプトが自動適用するパッチを渡す必要がありますか? または、変更した newlib をリポジトリに追加する必要がありますか?

わざわざ読んでくれてありがとう!これに続いて、私がやっていることのより詳細な内訳があります。


私のセットアップに関する詳細情報が必要な人のために:

Uzebox プロジェクト ( http://belogic.com/uzebox/ )に大まかに基づいて、ARM ビデオゲーム コンソールを構築しています。

私はそれを理解しようとして、多くの異なるリソースから引き出してあらゆる種類のことをしてきました. ここで私の冒険の始まりについて読むことができます (sparkfun フォーラム、私が自分でそれを理解するので、誰も応答しません): forum.sparkfun.com/viewtopic.php?f=11&t=22072

私は、これらすべてに続いて、newlib の移植に関する Stackoverflow の質問を読み、さまざまなチュートリアル ( wiki.osdev.org/Porting_Newlib など) をいくつか見ましたが、どこに、誰が、何を、いつ、どのように!

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

linux - lseek64を_実際に_64ビットオフセットを返すようにするにはどうすればよいですか?

次にstrace:

  • 20974464000==0x4E22CEC00-良い
  • -500372480==0xffffffffe22cec00-悪い

(off64_t)lseek64(fd, 0, SEEK_END);_llseekを誤って呼び出すように変更されます。

主要なdwordを切り落とすことなく、サイズが正しくなるようにするには、さらに何をすればよいですか?

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

glibc - libc でカーネルコードを呼び出す方法は? (Windows または Linux)

つまり、カーネルがその機能をユーザーランドアプリケーションに公開する方法です。

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

regex - regcompを使用した^[az]{0,20000}$regexコンパイルの恐ろしいパフォーマンス

なぜそのような正規表現のコンパイルがRAMの最大70%を占め、激しいスワッピングと平均16の負荷につながるのか疑問に思っています。

実行時間は数分のオーダーです(前にプロセスを強制終了する必要がありました)。(20,000ではなく2,000)の実行^[a-z]{0,2000}$は約100msであり、これは私にとって非常に重要です。

これを使ってパターンをチェックすると同時に、長さもチェックします。Ï正規表現は両方にとって便利であることがわかりました。私は何か間違ったことをしていますか?

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

c++ - C ++:libc宣言をstd ::に強制する方法は?

そのため、C++プログラムでlibcが必要になっています。ただし、グローバル名前空間全体に散らばるというアイデアは好きではありません。理想的には、libc全体を名前空間に強制しstd::たいので、std::memcpyではなく実行する必要がありmemcpyます。

これは可能ですか?そしてどうやって?必要に応じて、コンパイラ固有のマクロを使用します(MS VC ++10.0およびGCC4.6のみを対象としています)。

編集:私は文字通り「宣言をstdに強制する」という意味です-std::プレフィックスなしでは呼び出せないようにします。また、cstdioではなく、を含めていstdio.hます。

ありがとう!

0 投票する
8 に答える
12199 参照

c - 組み込みシステム用の小さな libc

ARM7 マイクロコントローラーの freertos と組み合わせて使用​​するための小さな libc を探しています。私は newlib を見てきましたが、私のニーズには少し複雑すぎます。Newlib はいくつかの関数 (printf() など) で malloc() を呼び出しますが、これは小さな組み込みリアルタイム システムには適していません。

私のアプリケーションに適合する、小型でポータブルなオープンソースの libc 実装を知っている人はいますか?

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

msvcrt - MicrosoftとGNUC/C++標準ライブラリの実装

学習ガイドとして推奨できるように、実装の観点からどちらが優れていてクリーンですか?私の見方では、Cライブラリ(C ++のものは醜いものになります)の実装を調べて、それらをいじるだけで、実際に多くのことを学ぶことができます。なぜなら、それらは設計と概念がかなり単純だからです。両方の実装を検討した人々からの偏りのない回答を期待しています。

知らなかった人のために、C /C++ライブラリのMicrosoftの実装のほとんどはデバッグ目的で利用できます。これらは、VisualStudioのインストールフォルダーの下にありVC\crt\src\ます。例えば。VS2008の場合:(c:\Program Files\Microsoft Visual Studio 9.0\VC\crt\srcにコピーをインストールしたと仮定しますc:\Program Files\)。