みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

またつまらぬゴミをビルドしてしまった・・・

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

またつまらぬゴミをビルドしてしまった・・・

投稿記事 by みけCAT » 9年前

GNU patch - 概要 [Savannah]
こういう系のコマンドラインツールで、自分のWindows環境でまともにビルドできた例がほとんど記憶に無いですが、
ビルドを試みてみましょう。
Windows版バイナリもあることはあるのですが、バージョンが古いのが嫌なのですよね・・・

テキストファイルを修正するだけだし、OpenSSHに比べたら単純だろうから、きっとうまくいくだろうな♪(全力でフラグ建造)

まずはconfigureでprefixのみを指定し、普通にビルド。
・・・エラー!
patch_error1.png
コンパイルエラー
patch_error1.png (20.01 KiB) 閲覧数: 956 回
CFLAGSとCXXFLAGSを設定し、

CODE:

$ export CFLAGS='-Dcdecl="__attribute__((cdecl))"'
$ export CXXFLAGS=$CFLAGS
ビルド!
・・・エラー!
patch_error2.png
リンクエラー
patch_error2.png (20.23 KiB) 閲覧数: 970 回
ちなみに、CFLAGS中の二重引用符を外すと、シェルスクリプトでエラーが出ました。

テキストファイルの修正にはあまり重要そうでない関数なので、ハリボテライブラリを作成。

haribote.c

CODE:

#include 

typedef unsigned int uid_t;
typedef unsigned int gid_t;

gid_t getegid(void) {
	return 0;
}

int lchown(const char *pathname, uid_t owner, gid_t group) {
	(void)pathname;
	(void)owner;
	(void)group;

	errno = EPERM;
	return -1;
}
ハリボテライブラリをビルドし、

CODE:

$ gcc -Wall -Wextra -c -o haribote.o haribote.c
$ ar qf libharibote.a haribote.o
ハリボテライブラリを使用する準備を行う。
※リンク指示を直接CFLAGSに指定しても、ファイル名より前に入ってしまうので効かない

CODE:

$ export CC=/c/myprograms/patch-build/use_haribote.sh
use_haribote.sh

CODE:

#!/bin/sh

gcc $* -L/c/myprograms/patch-build -lharibote
ビルド!
・・・make、make install成功!!やったか!?
早速使ってみよ!
・・・ちっ、OSの糞仕様のせいで、無駄に管理者権限が要求されやがる・・・まあいいや、とりあえず実行!
・・・エラー!
patch_error3.png
ランタイムエラー
patch_error3.png (26.23 KiB) 閲覧数: 964 回
しかもmsvcrt.dllとの相性が悪いようです。
申し訳ないが、これの修正は厳しそうなので、今回はここでリタイア。

またゴミバイナリを作ってCPU時間を無駄にしてしまった・・・(´・ω・`)

まあ、やはり構造が単純だったからか、ゴミバイナリ生成成功までのステップ数が少ないのがまだ救いですかね・・・

コメントはまだありません。