これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perlqnx です。
プログラム:
NAME
perlqnx - QNX 上の Perl バージョン 5
DESCRIPTION
perl5.7.2 以降、すべてのテストは次の条件でパスします:
QNX 4.24G
Watcom 10.6 と Beta/970211.wcc.update.tar.F
socket3r.lib 21 年 1996 月 XNUMX 日。
perl5.8.1 の時点で、少なくとも XNUMX つのテストがまだ失敗しています。
一部のテストでは、既知の状況下で問題が発生する場合があります。
詳細については、以下と Hints/qnx.sh を参照してください。
QNX 6.2.0 では、失敗するテストがまだいくつかあります。 以下と Hints/qnx.sh を参照してください。
詳しくは。
必須 ソフトウェア の コンパイル パール on QNX4
多くの UNIX ポートと同様に、これはいくつかの「標準」UNIX ユーティリティに依存していますが、
必然的に QNX4 の標準です。
/bin/sh
これは Configure によって頻繁に使用され、次に perl 自体によって使用されます。 QNX4版はいいけど
構成は 16 ビット バージョンで停止するため、QNX 4.22 を実行している場合は、リンク
/bin/sh /bin32/ksh へ
ar これは、標準の UNIX ライブラリ ビルダーです。 wlib を使用します。 Watcom 10.6 では、wlib の場合
「ar」としてリンクされている場合、ar のように動作し、すべて問題ありません。 9.5以下はカバーが必要です。
XNUMX つは ../qnx に含まれています
nm これは、ライブラリの内容を一覧表示するために configure によって (オプションで) 使用されます。 私はそうします
UU ディレクトリでオンザフライでカバー関数を生成します。
cpp Configure と perl には、C プリプロセッサを呼び出す方法が必要です。 シンプルに作成しました
正しいことをするccのカバー。 これがないと、Configure は独自に作成します。
動作するラッパーですが、コマンドライン引数の一部を処理しません
perl はそれをスローします。
make
これをコンパイルするには、GNU make が本当に必要です。 GNU make はデフォルトで QNX 4.23 に同梱されていますが、
以前のバージョンの quics から入手できます。
優秀 問題 パール on QNX4
QNX4 では動的にリンクされたライブラリはサポートされていません。
Socket 拡張機能を使用してコンパイルする場合は、TCP/IP ツールキットが必要です。
-lsocket が socket3r.lib の正しいコピーを見つけていることを確認する必要があります。 注意してください
Watcom コンパイラには、ほとんど含まれていない socket3r.lib のスタブ バージョンが付属しています。
機能。 また、wlink がライブラリのディレクトリを検索する順序にも注意してください。
/usr/lib/socket3r.lib が正しいライブラリを指している可能性がありますが、wlink が検出される場合があります
代わりに /usr/watcom/10.6/usr/lib/socket3r.lib を使用してください。 両方が正しいものを指していることを確認してください
つまり、/usr/tcptk/current/usr/lib/socket3r.lib です。
次のテストでは、QNX4 でエラーが報告される場合があります。
dist/Cwd/Cwd.t は、`pwd` と cwd が同じ結果を返さない場合に文句を言います。 cwd 呼び出し
`fullpath -t` なので、テストを実行する前に `fullpath -t` を cd するとパスします。
lib/File/Find/taint.t は、「.」の場合に文句を言います。 あなたのPATHにあります。 PATH テストがトリガーされます
cwd が「fullpath -t」を呼び出すためです。
ext/IO/lib/IO/t/io_sock.t: サブテスト 14 と 22 はスキップされます。
ソケットのノンブロッキング ステータスを読み取る機能は、QNX には実装されていません。
TCP/IP。 これは QNX に報告されており、TCP/IP の新しいバージョンで動作する可能性があります。
t/io/tell.t: サブテスト 27 が失敗しています。 現在も調査中です。
QNX 補助 ファイル
「qnx」ディレクトリ内のファイルは次のとおりです。
qnx/ar
標準の UNIX アーカイブ (別名ライブラリ) ユーティリティをエミュレートするスクリプト。 ワトコム傘下
10.6 では、ar が wlib にリンクされ、期待されるインターフェイスを提供します。 Watcom 9.5 では、
カバー機能が必要です。 これはかなり粗いですが、十分であることが証明されています
perl をコンパイルしています。
qnx/cpp
C の前処理機能を提供するスクリプト。 構成は、
同様のカバーですが、perl がスローするすべてのコマンドライン オプションを処理するわけではありません
それ。 これは /usr/local/bin に適切に配置されている可能性があります。
優秀 問題 パール 下 QNX6
次のテストは、QNX 5.8.1 の下で Perl 6.2.0 に対してまだ失敗しています。
op/sprintf....................................テスト 91 で失敗しました
lib/Benchmark......................テスト 26 で失敗しました
これは、C ライブラリの printf ルーチンのバグによるものです。 printf("'%e'", 0.) 生成
「0.000000e+0」ですが、ANSI では「0.000000e+00」が必要です。 QNX はこのバグを認めています。
クロスコンパイル
Perl は、ネイティブ開発キット (NDK) を介して QNX NTO へのクロス コンパイルをサポートしています。
Blackberry 10. これは、ARM バージョンと x86 バージョンの両方でクロスコンパイルできることを意味します。
プラットフォームを提供します。
Setting up a クロスコンパイル 環境
NDK は次の場所からダウンロードできます。http://developer.blackberry.com/native/downloads/>.
詳細はこちら:
<http://developer.blackberry.com/native/documentation/cascades/getting_started/setting_up.html>
他のことを試みる前に、デバイスをセットアップする手順について。
NDK をインストールしてデバイスをセットアップしたら、あとはセットアップするだけです
デバイスとクロスコンパイル環境。 Blackberry はスクリプトを提供し、
「bbndk-env.sh」(場合によっては「bbndk-env_10_1_0_4828.sh」のような名前)
これを行うために使用されます。 ただし、解決しなければならない問題が少しあります。
スクリプトは PATH を変更して、「gcc」または「ar」がクロスコンパイルの同等物を指すようにします。
ビルドプロセスを台無しにします。
したがって、代わりに次のようなことをしたいと思うでしょう:
$ orig_path=$パス
$ ソース $bbndk の場所/bbndk-env*.sh
$ export PATH="$orig_path:$PATH"
クロスコンパイラと残りのツールチェーンを PATH に入れるだけでなく、これにより
-Dsysroot を介して Configure に渡す QNX_TARGET 変数も提供します。
準備中 ターゲット
ターゲット システムにすぐに利用できる / tmpに、 っていうことは
一般に、次のようなことを行う方が安全です。
$ ssh $TARGETUSER@$TARGETHOST 'rm -rf perl; mkdir perl; mkdir perl/tmp'
$export TARGETDIR=`ssh $TARGETUSER@$TARGETHOST pwd`/perl
$ export TARGETENV="export TMPDIR=$TARGETDIR/tmp;"
後で、これを -Dtargetenv を介して Configure に渡します
呼び出し 構成
ARM デバイスをターゲットにしている場合 -- 現在、大部分の ARM デバイスが含まれています。
携帯電話とタブレット -- -Dcc=arm-unknown-nto-qnx8.0.0eabi-gcc を渡してください
構成、設定。 または、x86 デバイスをターゲットにしている場合、またはシミュレーターを使用している場合
NDK で提供されている場合は、代わりに -Dcc=ntox86-gcc を指定する必要があります。
サンプルの Configure 呼び出しは次のようになります。
./Configure -des -Dusecrosscompile \
-Dsysroot=$QNX_TARGET \
-Dtargetdir = $ TARGETDIR \
-Dtargetenv="$TARGETENV" \
-Dcc=ntox86-gcc \
-Dtarghost=... # 通常のクロスコンパイル オプション
onworks.net サービスを使用してオンラインで perlqnx を使用する