元スレCygwin + MinGW + GCC 相談室 Part 3
![](../../../newbb/images/imagesets/default/up-a.png)
みんなの評価 : ★
51 = :
全部入れたら2Gくらいか
54 = :
>>53
誘導ありがとうございます
向こうで聞いてみます
55 = :
>>53のスレで聞きましたけど
WindowsでGAS使いたいけど、どうすればいいのでしょう?
asm文書いてコンパイルしてリンカすると以下のようにエラーになってしまいます。
ld: warning: cannot find entry symbol _mainCRTStartup; defaulting to 00401000
a.out(.text+0x21):hello.c: undefined reference to `_alloca'
a.out(.text+0x26):hello.c: undefined reference to `__main'
a.out(.text+0x32):hello.c: undefined reference to `printf'
56 = :
>>55
せめてどんなプログラムを書いたか、どんなコマンドを入力したか、くらいは書こうや。
57 = :
>>55
C標準ライブラリともリンクしてあげてください。
58 = :
>>55-56
すみません。
①Cで以下のようなソースを書きました。
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
②GCC(MinGW 3.4.2)で -S 付けてアセンブリのソースを出力
③出てきたアセンブリを as を使い ld を実行すると>>55のようなエラーでました。
以上です。
60 = :
>>58
リンカのオプションは?
61 = :
>>60
リンカのオプションは何も付けていません。
付けないよまずいですかね?
62 = :
みんなデバッガとして何を使ってる?
64 = :
だーから MinGWとは、
ゴールデンウィークが最小限であることを言い表す言葉なんだって。
65 = :
VC
66 = :
insight使ってる
軟弱者でスマン
67 = :
gdb
70 = :
autoconfって必要? 一発でまともにconfigure通ったことが無い。
71 = :
autotoolizeされたソフトであっても Cygwin や MinGW+MSYS で
テストされていないものが多いからそんなもんだよ…
必要なライブラリが足りてないとかだったら >>70 が悪いだけだが…
75 = :
cmd.exe とか?
「cygwin上の」って意味が分からんから外れてるかもしれんが。
76 = :
cygwinホストからlinuxをターゲットにクロスコンパイルしようと思い、
gcc-4.2.0 のソースを ~/gcc/gcc-4.2.0.tar.bz2 に落としてきて展開し、その ~/gcc/gcc-4.2.0 で
$ ./configure --target=i686-pc-linux --enable-languages=c,c++ --prefix=/usr/local/gcc-4.2.0
$ make CC=gcc LANGUAGES="c c++"
/home/username/gcc/gcc-4.2.0/host-i686-pc-cygwin/gcc/as: line 2: exec: -o: invalid option
exec: usage: exec [-cl] [-a name] file [redirection ...]
make[2]: *** [crtbegin.o] Error 1
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2
と出ました。
因みに as の中身は、 exec "$@" で、の引数は下のようでした。
-Qy -o crtbegin.o /cygdrive/c/DOCUME~1/username/LOCALS~1/Temp/ccbwsMK0.s
コマンドが見当たりません。
エラーの原因が分かりません。
ググっても英語のBBS程度しか出て来ず、解決に至りません。
77 = :
いまどきエミュ環境なんか使ってるなよ。
VMか、colinuxか、本物のLinuxを入れるのが一番いい。
78 = :
>>76
そのasのラッパに、asの実体のパスがうまく伝わってないっぽいな。
本来なら exec ~/as -Qy -o となるところが exec -Qy -o となっているんだろう。
cygwin上でlinuxのcrossなんてきちんと検証されてないだろ。
自力で解決できないならあきらめろ。
79 = :
>>76
クロスアセンブラは用意してある?
81 = :
>>77
Win32 のコマンドラインアプリと、UNIX 由来のツールをパイプでつなげるときはどうするの
WINE だったら大爆笑だけど
82 = :
パイプでつなげて使いたいようなWin32のコマンドラインアプリって・・・ある?
84 = :
>>81
だから本来そういう用途のためのcygwinだろ。
何が悲しくてwin32でlinuxのcrossを動かさにゃならんのだ。逆ならともかく。
85 = :
UNIX系のコマンドは正常のときは比較的無口で
エラーのときは情報を必要十分な量だけ的確に吐くから
パイプで繋げるときに有効性が出てくるんだけど
Windows系のそれは無駄口が多いくせに
その割に状況を正確に把握出来ないほど
決定的に不足していて使い物にならないことが多い
86 = :
linuxで試しにdirと打ってみたらファイル一覧が表示された
lsのエイリアスが張ってあるな
88 = :
>>85
対象としてるユーザ層がそもそも違うOSだからな。
90 = :
>>82
自分でデータ処理するための細々したツールをmingwで書いてパイプでつないでるよ。
mingwだからwin32アプリだ。
つーか、そうしたいからcygwinやらmingwやら使ってるんじゃないの?
GUIアプリ作りたきゃ、タダのvisual studio使ったほうがマシだよ。
91 = :
>>90
その用途だと mingw である必然がないと思うが…
CUI でも Visual Studio 使って作ればいいんじゃね?
# cygwin で POXIS API使って作りたいとか cygwin 上の
# UNIX ライクツールと組み合せて使うとかならわかるんだが…
92 = :
個人の自由にけちをつける変態スレはここですか?
93 = :
公共の場でオナニーをする奴はけちつけられると思うヨー
95 = :
下記のページを見てdllを作ろうとしています。
トップページ
http://www2.atwiki.jp/ccw/pages/4.html
見ているところは下のほうの GCC - DLL の作成 のところです。
ページに書いてある通りのファイル名のファイルを作成し、中身はコピーペーストで
貼り付けました。
ページ内の gcc -c calc.c はうまくいっていると思います。
(通常のアプリで -c でコンパイルしたものをリンクすると正常動作するので)
ところが次の
dllwrap -k -def calc.def --driver-name gcc -o calc.dll calc.o
が失敗します。エラーメッセージは下記です。
D:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: Can't open base file \/cca02560.base
collect2: ld returned 1 exit status
D:\MinGW\bin\dllwrap.exe: gcc exited with status 1
原因は何でしょうか?
96 = :
>>96
--driver-name gccを取ったりしたらうまくいかない?
97 = :
>>96
試してみたところ同じですね。
ところで、一応解決しました。
過去にインストールした古い dllwrap がPC内に残っているのを発見したので、
それに差し替えたところ正常動作しました。
新しいものだと何か設定が必要なのか、
あるいは私のPCの環境が新しいdllwrapに悪影響を及ぼすのか、
それともdllwrapのバクなのか(可能性薄いかな)良くわからんです。
正常動作したバージョンは下記です。
DllTest> dllwrap --version
GNU D:\MinGW\bin\dllwrap.exe 2.15.94 20050118
うまくいかなかったバージョンは下記です。
DllTest> dllwrap --version
GNU D:\MinGW\bin\dllwrap.exe 2.16.91 20060119
確認したソースは下記です。
http://www.borujoa.org/upload/source/upload12756.zip
98 = :
SJISコードがうごかねー。
いい加減、gccもデフォルトでSJISに対応してくれよな。。。
せめて単純追加オプションで。
99 = :
>>98
つ ttp://www.noppi.jp/diary/?date=20041126
100 = :
dllwrapに関して質問した経緯上、引き続きdllwrapを調査していたのですが、
どうやら
http://www.mingw.org/
からリンクが貼られている
http://sourceforge.net/project/showfiles.php?group_id=2435
の
binutils-2.17.50-20060824-1.tar.gz
に問題があるようです。
おそらく、
binutils-2.17.50-20060824-1.tar.gzのdllwrapを使用すると >>95 が再現するものと思われます。
(確認する根性のある人は従来のdllwrap.exeはバックアップしておいてください。)
原因はTMPDIRもしくはTMPもしくはTEMPが正しく設定されていない状態でコンパイルされたdllwrap
が、binutils-2.17.50-20060824-1.tar.gzに含まれているせいだと思われます。
それらが設定されていない場合、stdio.hの #define _P_tmpdir "\\" が中間ファイルの先頭に配置され、
中間ファイルの作成に支障をきたすようです。
>>95と同じ症状で困っている方は、dllwrapのオプションに
-base-file aazz1199.base
等を追加すると正常動作するものと思われます。
以上、ご報告まで。間違いがあれば指摘お願いします。
みんなの評価 : ★
類似してるかもしれないスレッド
- Cygwin + MinGW + GCC 相談室 Part 8 (938) - [97%] - 2022/10/28 8:00
- Cygwin + MinGW + GCC 相談室 Part 7 (996) - [97%] - 2014/9/21 2:15
- Cygwin + MinGW + GCC 相談室 Part 6 (981) - [97%] - 2012/12/30 23:15
- Cygwin + MinGW + GCC 相談室 Part 5 (981) - [97%] - 2011/4/6 2:32
- Cygwin + MinGW + GCC 相談室 Part 4 (1001) - [97%] - 2010/3/23 18:31 ☆
- 【激遅】AppleGCC【絶望】 (111) - [1%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について