問題タブ [uclibc]
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.
c - mips-linux-ulibc-gcc: コマンドが見つかりません
micro libc buildroot をどのように構成し、どのように使用するのですか? 私は 802.11p デバイスで作業していますが、これはまだ私を悩ませています。openwrt を使用しますか?
gab@ubuntu:~/Desktop/usr/src/locomate-release/mips/src$ make mips-linux-uclibc-gcc -I /home/gab/Desktop/usr/src/locomate-release/mips/src/. ./incs -I /home/gab/Desktop/usr/src/locomate-release/mips/src/../socket-CAN/include -I /home/gab/Desktop/usr/src/locomate-release/mips /src/../src -c -DLOCOMATE -DSDK_NEW -o wsmpdemo.o wsmpdemo.c make: mips-linux-uclibc-gcc: コマンドが見つかりません make: * [wsmpdemo.o] エラー 127 gab@ubuntu:~/ Desktop/usr/src/locomate-release/mips/src$ ^C gab@ubuntu:~/Desktop/usr/src/locomate-release/mips/src$
gcc - GCC による uclibc のサポート
「man gcc」には、さまざまなプラットフォームやアーキテクチャ向けのマシン依存のオプションが多数記述されていますが、「-muclibc」は GNU/Linux オプションで定義されているため、特定のハードウェアではなく、その目的がわかりません。
誰かがそれについてもっと詳細を提供できますか?
ありがとう。
c++ - 奇妙なコンパイラの動作
ブーストを使用するプロジェクトをコンパイルしようとしています。私にとっての主な整数型は aint32_t
とint64_t
fromsys/types.h
です。ホスト システム コンパイラ (GCC 4.8.3、x86_64) を使用してプロジェクトをコンパイルすると、プロセスは正常に終了し、バイナリ ファイルは正常に動作しますが、外部ツールチェーン (GCC 4.3.5、armv5te) を使用して ARM にクロス コンパイルしようとすると、処理が中断されます。の上
私は使用していませんusing namespace boost
ブーストのコンパイル方法:
linux - Linux で実行可能ファイルを起動するときに使用する動的リンカー/ローダーを指定する
ほとんどのソフトウェアが Glibc に対してコンパイルされ、他のいくつかのソフトウェアが uClibc に対してコンパイルされている奇妙な Linux システムがあります。
Linux は標準のディストリビューションであるため、起動して実行すると、glibc から標準のダイナミック リンカ (/lib/ld.so.1) が呼び出されます。
実行可能ファイルを起動する前に動的ローダーを指定する方法を探しているので、uClibc に対してコンパイルされたソフトウェアを実行したい場合、uClibc 動的ローダーを使用する起動メカニズムを定義できます (/lib/ld-uClibc.so.0 )。
何か案は?
security - uClibc UCLIBC_BUILD_NOEXECSTACK が実際にリンカ フラグ -Wl,-z,noexecstack を使用しないのはなぜですか
最新の Linux セキュリティ強化戦術の 1 つは、オプションを使用してコードをコンパイルおよびリンクすることです-Wl,-z-noexecstack
。これにより、DLL またはバイナリが実行可能スタックを必要としないことが示されます。この状態は、readelf
またはその他の手段を使用して確認できます。
uClibc を使用していて、このフラグが設定されていないオブジェクト (.so ファイル) が生成されることに気付きました。しかし、uClibc には構成オプションUCLIBC_BUILD_NOEXECSTACK
があり、ヘルプによると次のようになります。
Makefile を掘り下げると、これは正しいです。フラグはアセンブラーにのみ適用されます。
フラグはアセンブラにのみ渡されるため、uClibc 開発者は重要な強化フラグを見逃しているということですか? 他のオプションがあります。たとえばUCLIBC_BUILD_RELRO
、同等のフラグがリンカーに追加されます ( as -Wl,-z,relro
)
しかし、何気ない観察者はこれを簡単に読み違え、私が最初に行ったように、UCLIBC_BUILD_NOEXECSTACK
実際には .so ファイルをマークしていないのに、実際には .so ファイルをマークしていると思い込む可能性があります。たとえば、OpenWRT は、uClibc をビルドするときにそのフラグが確実に設定されるようにします。
uClibc が「通常の」方法で物事を行わないのはなぜですか? ここで何が欠けていますか?ライブラリ (librt.so、libpthread.so など) は実際には NX ではありませんか?
編集-Wl,-z,noexecstack
Makefile をいじって、引数
を使用して noexecstack ビットを取得することができました。では、なぜ彼らもそれを使用しないのでしょうか?
clang - Clangを使用してソースコードをクロスコンパイルするには?
ホストマシン(Ubuntu 12.04 LTS)にclang 3.4をインストールし、単純なC++ 11プログラムをクロスコンパイルして、mips32r1(リトルエンディアン)+ uclibc環境で実行しようとしています。
クロス コンパイルを試みているときに、以下のエラーが発生します (詳細な出力を添付)。
clang はクロス ツールチェーンのアセンブラではなく、システム アセンブラを呼び出そうとしているようです。アセンブラをclangに設定する方法はありますか?
EDIT(1) - 参照リンクの追加