問題タブ [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.

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

linux - 非プライマリlibc(つまり、eglibc、uClibc)を使用したコンパイル

私は組み込み環境で働いています。ARMアーキテクチャ用のクロスコンパイラをeglibcプライマリライブラリとして使用しています(つまり、デフォルトlibcはツールチェーンに付属しています)。ここで、いくつかのアプリケーションをにリンクさせたいと思いますuClibc。そこでuClibc、そのツールチェーンを使用してコンパイルしました。アプリケーションをコンパイルしてリンクしようとしているuClibcときに、エラーが発生しました。ツールチェーンのデフォルトライブラリにリンクされています。同じマシン上に2つの異なるlibc(libc、uClibcなど)を置くことは可能だと思います。

ネットで検索して、以下が付属しました

  1. 1つのホスト上の複数のglibcライブラリ

    それが示唆したように、私は次のことをしました

    この場合、デフォルトlibc.so.6eglibc

  2. 別のlibcファイルにリンクする方法は?

    上記のリンクが示唆しているように、私は次のことも試しました:

    この場合も、デフォルトlibc.so.6eglibc

どこが間違っているのですか?私は本当にこれで立ち往生しています。誰かが光を当ててくれませんか?

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

embedded - uClibc に対してコンパイルされた BusyBox アプレットを実行すると、「不明なエラー 2」が発生する

SuperH プロセッサ ボード用の組み込み Linux を作成しようとしています。uClibc で Buildroot 2012.2 ツールチェーンを使用しています。

すべて正常にコンパイルされますが、いくつかの BusyBox アプレット (たとえば、'ls' または 'mount') を実行しようとすると、次のようなエラーが発生します。

特に「ls」の場合、このエラー number-of-files-in-folder 回を書き込みます。

これを引き起こしている可能性のあるアイデアはありますか?インターネット上の誰も同じ問題を抱えているようには見えず、運が悪いので数日間構成をクロールしています。

このエラーは uClibc の設定ミスが原因である可能性があると思いますが、それは私の推測です。

ありがとう。

編集: uClibc でいくつかのエラー メッセージ オプションを有効にしましたが、「そのようなファイルやディレクトリはありません」というエラーが表示されます。

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

gcc - arm-angstrom-linux-gnueabi-gcc リンカが uclibc とのリンクに失敗する

オングストローム Linux 用のアプリケーションを構築しようとしています (私の場合は、libstdc++ の代わりに uclibc を使用します)。私はbitbakeとopenembeddedを使用しています。-muclibcシンプルなツールチェーンを使用すると、フラグを追加するだけでビルドを成功させることができます。bitbake を使用すると、ビルド コマンドは次のようになります。

どこ-muclibc mainThread.cpp lib.cpp -lportaudioが私によって行われます。ポートオーディオ ( -lportaudio) は正常にリンクされました。Uclibc (私が思うに) はリンクできません。次のエラーが表示されます。

ありがとう

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

linux - bitbake を使用して uclibc でパッケージをビルドする方法 - uclibc をビルドしようとすると Bitbake で MultipleMatches 例外が発生する

bitbake を使用してアーキテクチャuclibc用にビルドしようとしていますが、次の出力が得られますarm7a

特定のレシピを作成しようとしていますが (間違っていますか?)、

ありがとう

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

compilation - uCLibc を使用して valgrind をコンパイルする

私はプロジェクトに取り組んでおり、uClibcを使用してvalgrindをコンパイルしたいと考えています。続行する方法について誰かが私に何か提案できますか?

私は fedora と i386 プラットフォームを使用しています。ターゲット プラットフォームも現時点では i386 であり、後で MIPS で動作します。

ありがとう

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

configuration - uclibc を使用してコンパイルする方法は?

こんにちは、buildroot ツールチェーンをインストールし、uClibc ベースの chroot で実行される単純な「Hello World」プログラムをコンパイルできます。ただし、./configure を使用するプログラムの場合、システムに存在する glibc ベースのツールチェーンではなく、uclibc ベースのツールチェーンを使用するように要求する方法について混乱しています。私の OS は Fedora で、i386 ベースのマシンです。同じプラットフォーム用に uClibc を使用してプログラムをコンパイルしたいと考えています。

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

gcc - ARM gentoo crossdev と uclibc: EABI ではなく OABI が必要

crossdev での ARM + GCC + UCLIBC リンクの問題を解決できる人はいますか?

Gentoo フォーラムにも投稿されています: http://forums.gentoo.org/viewtopic-t-925012.html

最近、古い GCC と OABI を使用して開発された実行可能ファイルを含むプロジェクトに割り当てられました。参考までに、システム上で正常に動作する実行可能ファイルの readelf からのヘッダー出力を次に示します。

crossdev と最新の gcc/binutils/linux-headers/etc を使用してクロスコンパイラを作成しました。そしてEABIと。

私は非常に喜んで、そのクロス コンパイラを使用してローカル フォルダーに実行可能ファイルを追加し始めましたが、後でハードウェアで実行可能ファイルを試してみたところ、最終的にセグメンテーション エラーが発生したことがわかりました。私は、かなりのグーグル検索を介してのみ、uclibc 用の古いレガシー ABI である OABI が本当に必要であることに気付きました。私の以前のクロスコンパイラは 2005 年頃のものでした。

別の参考として、eabi を使用した私の実行可能ファイルは、readelf から次のようなヘッダーを生成していました。

マシンは同じですが、セグメンテーション違反により、ターゲットでバイナリを実行する方法が提供されません。

さらにグーグルで調べたところ、レガシーシステム用の eabi コンパイラを使用してコードを生成する方法がある可能性があることがわかりました。このコマンドを実行したとき、私はとても幸せでした:

そして、私は次のようになりました:

この時点で、私は不安になり、-mabi=apcs-gnu で実行可能ファイルを作成しようと決めました。

そして、リンカーエラーが発生します:

質問: これにより、EABI が正しくなく、OABI が必要であると考えるようになりました。そうですか?

私はそれが事実だと信じていたので、crossdev を通じて uclibc を調べ始めました。

なんらかのオブジェクト バイナリにコンパイルされるファイルが正しい elf ヘッダーを持っていることを報告できることをうれしく思います。だから私はこれが私が欲しいものだと思います。

しかし、これは uclibc のコンパイル中に次のように停止します。

エラーを適切に分解した場合、私はそれを信じています

1) アーム Makefile.arch は __aeabi_unwind_cpp_pr0 を正しくビルドしていません。これは、ファイルが EABI が設定されている場合にのみビルドされるためです。

このエラーの修正は次のとおりだと思います。

2) gcc のソフト フロートがリンカによって適切にインクルードされていません。現時点では、その理由をはっきりとは言えません。

そこで、GCC にソフト フロート用のビルドを強制し、後で uclibc のビルド内でリンクされるようにしました。

次に、コンパイル用のログで -msoft-float と -mfloat-abi=soft が使用されているかどうかを確認しました。

しかし、 --with-float=soft がconfig.log内に設定されていることに注意してください。そのため、フロートが生成されているはずだと思います。
そして、gcc のコンパイル オプションの -D__GCC_FLOAT_NOT_NEEDED に注意してください。

GCC で回帰を実行して、ブレークが発生した場所を確認しました。

  1. gcc 4.x は ulibc では機能しません。-- 4.4.4-r2 以降、ulibc は gcc とのリンクに失敗します -- 4.4.4 より前では、gcc は表示されません
  2. gcc-3.4.6-r2 は、USE=-nptl が使用されている場合に機能します

参考までに、以下を実行しました: binutils: 2.22-r1 Linux Header: 3.3, 3.4 uclibc: 0.9.33.2 gcc: 3.2.3-r4, 3.3.6-r1, 3.4.6-r2, 4.1.4-r1, 4.3.3 -r2、4.4.2、4.4.4-r2、4.4.5、4.4.6-r1、4.4.7、4.5.3-r2、4.6.0、4.6.1-r1、4.6.2、4.6.3

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

rest - uCLib の RESTful クライアント API

uClibc を使用して組み込み環境に RESTfull クライアントを実装する必要があります。

µClibc のみに依存できる C 言語で RESTful クライアントを実装するオープン ソース ライブラリはありますか?

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

php - UCLIBC を使用して PHP をクロスコンパイルする

これは再投稿です。前の投稿は閉じられ、SERVERFAULT に移動され、再び閉じられました。この投稿は有効なスタックオーバーフローの問題だと思います。なぜなら、automake/compile/linking エラーが原因だと思うからです。これは、サーバー管理の問題ではなく、プログラミングの問題です。

PHPのクロスコンパイル

https://serverfault.com/questions/418521/cross-compile-php

投稿の開始

PHP 5.4.0 ソースをダウンロードして展開し、ソース フォルダーに移動しました。

私は次のように構成します:

に続く

エラーはありません。すべて正常に動作します。次に、make install を行います。

繰り返しますが、すべて正常に動作します。ターゲット プラットフォームに移動して実行します

Web サーバーと直接 php で簡単なホームページをテストします。

期待どおりに動作します。次にテストします。

いやいや〜

別のスクリプトをテストします。

同じ結果:

私はphp.iniを持っていますか?

はい、無効な機能はありません。strace のテスト /usr/arm/www/bin/php index.php

ファイル info.txt が存在し、読み取り/書き込みの許可を得ています。

strace のテスト /usr/arm/www/bin/php shell.php

gdbを介してindex.phpを実行すると、次のようになります。

gdb は shell.php からこれを提供します プログラムの開始: /usr/arm/www/bin/php shell.php

zend.h は /usr/arm/www/include/php/Zend/ にあります。明らかに、クロス コンパイル中に問題が発生しました。私は何を逃したのですか?これを修正するためのconfigureフラグが見つからず、目的の場所へのシンボリックリンクを作成するとgdb出力が削除されますが、phpはまだsegfaultsします。

助けてくれてありがとう!

アップデート:

Update2

memcheck を使用して valgrind を再実行すると、以前とほぼ同じ出力が得られましたが、これは新しいものでした:

Update3

valgrind には失敗しましたが、gdb を続行し、ターゲット システムにフォルダー /home/maiden/..etc を作成し、php/include フォルダーの内容をコピーして gdb を再実行しました。今、私はこのエラーメッセージを受け取ります:

これは、sixeightzero が昨日コメントに書いたことと非常によく似ています。PHPバージョン5.3.5、5.4.0、5.4.5のすべてで同じエラーを試しました。

アップデート4

glibc 用の新しいツールチェーンをダウンロードし、新しい busybox を glibc でクロスコンパイルし、chroot ジェイルを作成し、php を uclibc の代わりに glibc でクロスコンパイルし、自分の uclibc ボックスの chroot ジェイル内でテストしました。しかし、私はまだphpを私のulibc環境で動作させる必要があります....