メモ

2023年10月26日

業務でシェルスクリプトを書いていて、非常に不可解な現象に遭遇しました。いまだに未解決ですが、メモを残しておきます。

以下が、現象が発生する最少シェルスクリプトとなります。
#!/bin/bash -xe

export LIBFLAGS="c:/ d:/"

/c/msys64/mingw64/bin/gcc.exe -v &> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.txt
続きを読む

2017年12月18日

QEMU の Windows 版は、標準(エラー)出力が exe のあるフォルダ内の stdout.txt/stderr.txt というファイルに出力されてしまうので、コマンドラインから使う際には不便だと長年思っていましたが、これは SDL ライブラリのバージョン 1.2 の仕様だったようです。最近の QEMU はバージョン 2.0 に対応しているので、コンソールに出力されます。MSYS2 上でビルドする際などに、SDL 1.2 と 2.0 が両方インストールされていると 1.2 が優先されてしまう場合があるので、configure 時に --with-sdlabi=2.0 を指定しておくと確実です。

2017年12月11日

Windows 10 Fall Creators Update から WSL (Windows Subsystem for Linux) が使用できるようになり、Windows で Ubuntu 等の Linux バイナリが実行できるようになり、非常に便利です。
諸事情により、MSYS2 上から WSL 内の実行ファイルを実行したい場合に、MSYS2 はコマンドライン文字列中のファイルパスを勝手に変換してしまうため、正しく wsl コマンド経由で WSL 内部のファイルにアクセスすることができなくて悩んだので、その解決策のメモです。
続きを読む

2015年03月02日

Ubuntu などの最近の Linux ディストリビューションは、MinGW 環境をターゲットにしたクロスコンパイラが標準パッケージに含まれているので、非常に簡単に Windows 向けのバイナリをコンパイルすることが可能です。Windows 上で MinGW + MSYS あるいは cygwin で、Linux を前提としたツールをコンパイルするのはそれなりに大変なので、Linux 環境でクロスコンパイルしている方も多いと思います。私も愛用しています。

わかってしまえば非常にマヌケな話なのですが、ビルドしたバイナリを Linux 上でテストまでしたいなと思い、何気なく wine(Windows API 互換レイヤー)をインストールして色々検証していて、久しぶりにビルドしてみたら、突然全く触ってないあたりのクロスコンパイル(正確には configure)が失敗するようになり、原因の究明に苦労したので、その時のメモです。
続きを読む

2015年02月26日

GNU make には、暗黙のルールの連鎖で中間ファイルを生成したら、自動的に削除するという仕様があるのですが、これと WIndows のファイルシステムの、ファイル名の大文字小文字を区別しないという仕様が組み合わさると、ファイルが削除されてしまうという現象があり、実際ハマったのでメモしておきます。

10.4 Chains of Implicit Rules
(make 3.79.1: 新堂安孝氏による日本語訳):10.4 暗黙のルールの連鎖
続きを読む

2015年02月16日

Ubuntu 14.04 64bit で実行される、とあるプロダクトのビルドスクリプトの一部で、大量にファイルが存在するディレクトリを cp -r * でアーカイブしようとした所、一部のファイルがコピーされないという現象に悩みました。当初は HDD やファイルシステムの障害を疑ったりもしたのですが、結局は bash によりワイルドカードが展開され、cp に渡されたコマンドライン引数が長すぎて、途中で切れていたのが原因のようです。(エラーが何も出ないのが不思議なのですが…。)

続きを読む

2014年08月27日

マニアックなネタが続いて申し訳ありません。またプリプロセッサの話です。

前回:C/C++プリプロセッサの挙動の違い(defined編)
前々回:米Facebook社のC/C++プリプロセッサWarpをWindows環境でビルド

Warp の挙動を調べていて、以下のような、マクロ展開後にコメントが生成されるようなコードが通らない事に気が付きました。
(元は MinGW GCC の x86_64-gdcproject-mingw32/x86_64-gdcproject-mingw32/sysroot/mingw/include/wtypes.h ヘッダ)
$ cat gen_cpp_comment.c
#define _VARIANT_BOOL /##/

$ ./warp.exe --stdout gen_cpp_comment.c
# 1 "gen_cpp_comment.c"
# 1 "i:\test\warp//"
# 1 "<command-line>"
# 1 "gen_cpp_comment.c"
gen_cpp_comment.c(2) : ## cannot appear at end of macro text
続きを読む

2014年08月21日

前回の記事でビルドした Facebook 社の Warp の挙動を調べていた所、#if や #elif 指令中でのみ使用可能な defined 単項演算子の挙動が GCC のプリプロセッサと異なり、GCC 用のヘッダを前処理できない事例を発見したので、その時のメモです。

続きを読む

2014年08月12日

Warp は Facebook 社が D 言語の作者 Walter Bright 氏と協力して開発した C/C++ プリプロセッサで、自社のビルドシステムの高速化のために開発したそうです。D 言語で書かれていて、非常に緩い Boost Software License 1.0 で GitHub に公開されています。

「Under the Hood: warp, a fast C and C++ preprocessor」
https://code.facebook.com/posts/476987592402291/under-the-hood-warp-a-fast-c-and-c-preprocessor/
https://github.com/facebook/warp

Cent OS 6 以外では動作確認されていないそうですが、いろいろ試行錯誤した結果、Windows の MSYS + GDC(D Programming Language for GCC)環境で、とりあえず warp の生成までは成功したので、その時のメモです。(builtin_defines.sh というシェルスクリプトが git リポジトリに入っていないようで、ドライバプログラム warpdrive の生成は失敗しました。)

続きを読む

2013年04月19日

QEMU 1.1.2 の target-mips/op_helper.c を眺めていて、
約 3 年前にブログで取り上げた不具合が直っていたことに気付きました。
続きを読む

2010年11月11日

ノートPCで使っていたVMWare player上のUbuntuの仮想マシンのハードディスクが足りなくなってしまいました。

実際のマシンだったらハードディスクを買ってきて、ケースを開けて増設するところですが、仮想マシンなので(ホスト側のディスクに余裕があれば)お金をかけずに簡単に仮想ディスクを追加することができます。以下はそのメモ。

続きを読む

2010年08月05日

(この記事は一ヶ月ほど前に下書きを書いたまま、だいぶ時間が空いてしまいました。。。「タイムリーなことに」とか書いてますが、思いっきり時期を逃してしまいました。とりあえず公開します。)

PyMite は Python のサブセットということですが、どれぐらいの機能をサポートしているのかを調べました。

(pymite-08/docs/html/PyMiteFeatures.html)

タイムリーなことに、

組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ

のように、スクリプト言語の仕様を組み込み向けに軽量化して活用しようという動きも出てきています。

PyMite の仕様は参考になるのではないかと思われます。

続きを読む

2010年06月24日

前回の続きです。

Interactive PyMite (ipm) のドキュメント (pymite-08/docs/html/InteractivePyMite.html) を読みました。

ipm は、基本的には通常の Python (CPython) の Interactive Mode と同じようなものですが、ホスト上で動く対話的インタフェース部 (ipm-host) と、ターゲット上で動くコード実行部 (ipm-target) が分離されているのが特徴のようです。

続きを読む

2010年06月17日

hik さんのコメント で存在を知りました。ありがとうございます。

python-on-a-chip プロジェクトの成果物のようです。これは一言でいうと、組み込み向けの Python VM で、ROM 化のためのしくみ (Python ライブラリのバイナリイメージ、あるいはそれをバイト配列で表現した C コードを生成するしくみ) なども含んでいるようです。

README を読んでみると、最小要求 AVR などの 8 bit MPU、64 KiB フラッシュメモリ、4 KiB RAM からのターゲット上で、OS レスで Python 2.5 (のサブセット文法に相当するバイトコード) が動くそうです。ライセンスは GPL v2。

PC 上でも動くようなので、とりあえずビルドして動かしてみます。

続きを読む

2010年06月01日

前回はビルドしただけでしたが、今回は実際にインストールして使ってみます。

… と思ったのですが、実は前回の内容では、cpp.exe や ccom.exe などのコンパイラ本体がちゃんと作られていないことがわかりました。

その後努力してみたのですが、結論から言うとどうも上手く行きませんでした。

というわけで、以下は作業ログです。

(ブログを書きながらソフトウェアを試しているので、こういう時もあります…。)

続きを読む

記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード