cygwin + mingwn + gcc 相談室
rm -f calculation.o
gcc -g-c ship.h -lm
gcc:Compilation of header
file requested
make:***[calculation]
Error1
と出力されます.
今日初めてwindows環境でUNIXを使うのですが、これの解決策を教えて下さいませんか.
お願い致します.
デスクトップ上の問題なのでしょうか?
ヘッダをコンパイルしない。
>>285 >デスクトップ上の問題なのでしょうか?
そんな気がする・・・
288 :
デフォルトの名無しさん:04/07/12 22:07
例えばどんな可能性がありますか?
コマンドラインに何か付け加えるとかでしょうか?
スルーですかそーですか
291 :
デフォルトの名無しさん:04/07/12 22:24
ヘッダって何ですか?
救いようが無いですね
>gcc -g-c ship.h -lm
>gcc:Compilation of header
>file requested
ship.hっていうヘッダファイルをコンパイルしようとしてるから
「ヘッダのコンパイル」
「ファイルよこせ」
ってエラーが出てるんだろ。
C(またはC++)のファイル(拡張子が.c c++ cc cxx C cppのどれか)をコンパイル汁。
gccでは3.4.0より古いバージョンでは
ヘッダファイルのコンパイルはできん。
>>291 .cや.cppなどのファイルから共有目的でincludeされるファイル.
Cでは関数のプロトタイプ.C++では更にクラス定義などが書かれる.
拡張子は.hであることが多い.
コンパイルって何ですか?
>>293 拡張子を.cに直して改めてコンパイルしてみましたところ、
make:*** No rule to make target `ship.h',needed by `main.o'. Stop.
と出力されました.
これは一体・・・?
もはや行き止まりな気もするのですが・・・;
とりあえずMakefileみせろ
オレは釣られたのか...orz
#
# makefile ship
# by kouichirou zusi
#
#------------------------------------------------------------------
SRCSc = main.c subfunctions.c calculation.c economy.c
SRCSf = sqp.f
#--------------------------------------------------------
OBJSc = ${SRCSc:.c=.o}
OBJSf = ${SRCSf:.f=.o}
#--------------------------------------------------------
CLIB = -lm
F77LIB = -L/opt/SUNWspro/lib -lV77 -lF77 -lm
#F77LIB = -L/opt/Fortran1.2/lib -lF77 -lI77 -lU77 -lc -lm
#F77LIB = -lF77 -lI77 -lU77 -lc -lm
#--------------------------------------------------------
なぜ名前まで晒す
FLOAT_OPTION = -g
#
#--------------------------------------------------------
#FFRAGS = -04
FFLAGS = -xO4
#FFLAGS = -x05
#FFLAGS= -autopar
FFLAGS= ${FLOAT_OPTION}
#--------------------------------------------------------
exe : ${OBJSc} ${OBJSf} ship.h
f77 ${OBJSc} ${OBJSf} -o $@ ${FFLAGS} ${F77LIB}
${OBJSc}:ship.h
rm -f $@
gcc ${FFLAGS} -c $< ${CLIB}
#${OBJSf}:
#rm -f $@
#%.o%.f
#f77 ${FFLAGS} -c $< ${F77LIB}
#------------------------------------------------
clean:
rm -f *~ *.o *# ${BINS}
3つに分けました.
助言お願い致します.
まず逗子浩一郎をしばけ。
そして
${OBJSc}:ship.h
を
.c.o:
に置き換えろ。
あと
>>299でship.cにしちゃったのはship.hにもどせ。
なんでそんなに優しくなれるんだ
宿題丸投げで、しかもマルチポストなのに
>>309 コンパイルした結果、
$make
Makefile:36: *** target pattern contains no `%'. Stop.
と出ました.
親切な人は逃げた模様
マルチだったのか。じゃ放置。
315 :
デフォルトの名無しさん:04/07/13 21:11
親切な人さんへ> 助言お願いします
以下のソースをgccでコンパイルしようとすると
c:4 syntax error: "("unexpected
と出てコンパイルできません
VC6.0ではコンパイルできました
なぜなんでしょうか?
#include<stdio.h>
#include<ctype.h>
int main(void)
{
int ch;
char sw;
sw=0;
while((ch = getchar()) != EOF){
if(sw==0){
ch=toupper(ch);
}else{
ch=tolower(ch);
}
sw=sw^1;
putchar(ch);
}
return 0;
}
>>317 gcc(3.3.4)だとできますよ.
環境は?
319 :
デフォルトの名無しさん:04/07/15 11:21
Windows環境でFFMPEGを正常にビルドできない…
EXEは作成されても有効にならないオプションがたくさんあります
CVSが毎日のように更新されてるからソースコードの原因とは思えないんですけど
何で上手くビルドできないんだろう…
>>318さん
すいません、なんか今やったらうまくコンパイルできました。
しつれいしました
FFMPEGビルドできた人いないですか?
それ以前にそんなものには興味なしなのかな
>>322 Mpeg2エンコードで後ろ4フレームぐらい削られるのと
-me full オプションが効いてない上にIBBPと続くはずのフレームがIBBIの連続になったり。
ビルド時にいたるところでwarningが出てるのでそれが関係してるとは思うのですが
MSYS,MINGW、bitwalkやら日本語プロジェクトを試してもお手上げでした
324 :
デフォルトの名無しさん:04/07/18 13:54
gcc/linux で使える、メモリ管理上のバグを検出するツール
を探しています。今組んでいるプログラムで、何も効果がな
いはずのコード(同じ初期化処理を何度も繰り返すコード等)
を挿入すると、結果が変わるというバグが取れなくて困って
います。一応ネット上で調べて、memwatchというのを使って
チェックしてみたところ、メモリリークは検出できて、debugし
たのですが、最初の問題は解決しません。memwatchの開
発者も、全ての問題が検出出来るわけでは無いと書いてい
ます。どなたか、この種の問題をdebugするのに良いツール
をご存知でしたら、お教えください。
(ちなみに、最適化オプションによって現象が出たり出なかっ
たりします。debugモードでコンパイルすると出なくなるので、
gdbでトレースすることもできそうにありません。)
マルチ乙
多分、普通にバグっててメモリ壊してんだろうな。
壊しちゃいけないところを壊してるならツールで検出できるが
そういう単純なバグはツールでは検出できんよ。
gcc/linux といっているのに何故ここに誘導するのか意味が分からない
gccのデバッガだとおもたから
330 :
デフォルトの名無しさん:04/07/18 23:45
Subject: [Mingw-users] ANNOUNCEMENT: GCC-3.4.1 release candidate
Date: Sat, 17 Jul 2004 00:40:38 +1200
GCC-3.4.2 が出る前に stable になるんかね。
331 :
デフォルトの名無しさん:04/07/19 01:26
おい、使ってる、リソースエディタ教えろ!
emacs
333 :
デフォルトの名無しさん:04/07/19 18:23
>>332 Weditでできたよ。
というか、理屈がわかったよ。
テキストエディタでも、よさそうだな。あんがと
おい、DirectXの使い方教えろ!
>>334 SDKとbcc用のd3dxなんかのdllを落としてきて、
後は普通にビルドするだけ。
BCCってなんだ。ここはGCCスレだったはずだが・・・
俺の脳みそじゃ、DirectX利用できる環境構築は、無理らしい。GDIで我慢するよ。糞氏ね
直接DirectX扱いたいならVCToolkitのほうがいいんじゃないの?
>>339 いや、ググったらいくらでも構築例がでてるのに無理らしいって根拠レスなレスのソースが知りたいのよ
GCCで構築するのにBCC用に変換したライブラリが必要って一つ前のレスも読んでないだけなのか?
理解できないのか?どの程度説明欲しいのよ
>>340 GCC好きな変態が集まるスレってことで
OpenGLと比べてDirect3Dが有利とは思わないけどそれ以外は便利
DirectXを使うために言語を選択するならVCってのは当然といっちゃ当然
OpenGLは遅いという偏見があるんだが、OpenGL2.0で見方が変わるのかも。
つーか大抵のベンチでOpenGL実装とDirectX実装のスコアを見るとOpenGL
実装のほうがかなり負けるのは手抜き実装してるためなのかね?
> 大抵のベンチでOpenGL実装とDirectX実装のスコアを見ると
たとえばどのベンチマーク?教えてplz
印象に残ってるのでは、ポストペット(バージョン忘れた)。ダブルスコアぐらい軽く差がついてた。
ひょっとするとオンボードグラボで、OpenGLがソフトウェア計算されてたのかもしれない。
DirectXの方が機能が先だからか、DirectXでOpenGLの実装してるベンダは多いみたいですよ兄貴。
かつてはOpenGLの方がハードウエア扱う上でのレイヤの層が薄い分速度面でも有利なんて
SGIのサイトに載ってたくらいなんだけどね。
Xabreなんかの手抜きカードはOpenGL実装を随分さぼってるよね
NVIDIAもATIも、OpenGLとDirectXは共通ドライバだかなんだかで、
機能の違いをうまく吸収するようにしてるらしいが、実際に試してみたら
結構露骨な差が出たりするのかな。
DirectXは基本的にハードウエア環境の違いを吸収するためのもの、
OpenGLはグラフィックプログラミングの環境自体を抽象化するためのもので
基本の性質がぜんぜん違うものだし、単に数字だけみればOpenGL不利は
変わらないのかな。
拡張機能使い倒さないと、GLはハードの性能引き出せないしね。
そしてスレ違いな気がしてきますたsage
cygwinでg++3.3.1-3を入れて、プログラムファイルをコンパイルすると、core dump
ってでます。インストールに失敗しているからなんでしょうか?
詳しい方、ご教授願います。
質問が不明瞭
>>349 $ echo 'void func () {}' > hoge.cpp
$ g++ -c hoge.cpp
で何と出ます? なるべくそのまま貼ってみて下さい.
オレもcygwin1.5.10-3にしたらコア吐いた。
ただ一言"core dump"っていうだけ。
cygwin1.5.9-1にしたら吐かなくなった。
何をどうやって、どんなファイルをどうコンパイルしたのかワカラン
あと、どうでもいいけど "core dumped" じゃなくて "core dump" なのか
まあ説明不足だよなあ。エスパーはいないし。
TMPやHOMEに日本語が入ってるんで、環境変数TMPDIR に /tmpを
設定して回避した人がいないわけではないらしいが、どのみち…
>>353 >何をどうやって、どんなファイルをどうコンパイルしたのかワカラン
オレの場合は
int main(void) { return 0; }
だけのファイルでもコアダンプした。
コンパイラ等のインストールは全部setup.exe任せ。
>あと、どうでもいいけど "core dumped" じゃなくて "core dump" なのか
たぶん "core dumped" っすね。
cygwin1.dllとcyggmp-3.dllファイルは
勝手に2次配布してもいいのでしょうか?
プログラムソースはきちんと公開します。
>>358 その二つのライセンスを明示して、
dllをビルドするのに使ったソースを渡せるようにしておけば、
勝手に配ってよろしいはず。
>>359さん
わかりました。
アリガト!(´▽`)ございました
361 :
デフォルトの名無しさん:04/08/17 12:01
こんにちは。
cygwin + gccによるWinInetの扱いがうまくいきません。
<サンプルソース(sample.c)>
#include<wininet.h>
int main(void){
HINTERNET hInet;
//単に、InternetOpenが使えるかチェックしているだけ
hInet = InternetOpen("Test", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
return(0);
}
<もののありか>
wininet.h: /usr/include/w32api にある。
wininet.dll: c:\WINDOWS\system32 にある。
<コンパイル結果>
bash-2.05b$ gcc -lwininet sample.c
/cygdrive/c/DOCUME~1/XXX/LOCALS~1/Temp/ccH7TWGo.o(.text+0x81):sample.c:
undefined reference to `_InternetOpenA@20'
collect2: ld returned 1 exit status
bash-2.05b$
<考察>
wininet.hにはInternetOpenの宣言があるから、wininet.dllへのリンクがうまくなされていないようである。
「wininet.libも必要なのか?」と思ってみたが、「ライブラリがない」というエラーも出ないので、違うような
気もする。
というわけで、原因についてお分かりになられる方がいらしたら、是非アドバイスをいただけませんでしょうか。
よろしくお願いします。
362 :
デフォルトの名無しさん:04/08/17 12:06
GNU+Cygnus+Windows=Cygwin
Minimum+GNU+Windows=MinGW
> $ gcc -lwininet sample.c
これを
$ gcc sample.c -lwininet
こうしてみそ。
>>363 殿、
ぐわわわーーん。
No error finishです!
オプションの記述順って関係あったのでしたか!
ぜんぜん関係ない方向をいま一生懸命調べていたところでした。
先ほどのエラーは消えましたので、ようやくちゃんとした
プログラムに進めます。
どうもありがとうございました。
ふぁっきゅーだね
理由があるとはいえ、わかりにくい仕様だよな。
>> 365-366 さん、
man gcc
の-l のところを見たら、以下のようにありまして、理解しました。
失礼いたしました。
It makes a difference where in the command you write this option;
the linker searches and processes libraries and object files in the
order they are specified. Thus, foo.o -lz bar.o searches library z
after file foo.o but before bar.o. If bar.o refers to functions in
z, those functions may not be loaded.
368 :
デフォルトの名無しさん:04/08/18 14:37
GNU=ぐにゅ
GCC=ぐにゅしーこぱら
369 :
デフォルトの名無しさん:04/08/18 15:59
370 :
デフォルトの名無しさん:04/08/18 16:00
a.outじゃなくてa.exeです。ごめんなさい。
-mwindows
素早い回答ありがとうございました。
>>368 GCC は、GNU Compiler Collection なんだが
>>369 がんがれシュンスケ!!
一応ツッコミを入れておく。
376 :
デフォルトの名無しさん:04/08/23 19:56
gcc3.4 なんかチェックが厳しくなったような気がするんですけど
今までコンパイルできてたソースで
コンパイルエラーが多発
gcc3.4はまだ駄目ぽ
GCC自身のsrcが汚すぎ
379 :
デフォルトの名無しさん:04/08/25 23:11
cygwinの標準インストールを行った環境で、以下のプログラムをコンパイルしたらエラーが出てきました。
// console.cpp
#include <iostream>
using namespace std;
int man()
{
cout << "Hello World\n";
return 0:
}
----------------------
$gcc console.cpp
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccePxVIZ.o(.text+0x29):console.cpp:
undefined reference to `std::cout'
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccePxVIZ.o(.text+0x2e):console.cpp:
undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::
operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<c
har> >&, char const*)'
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccePxVIZ.o(.text+0x57):console.cpp:
undefined reference to `std::ios_base::Init::Init[in-charge]()'
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccePxVIZ.o(.text+0x72):console.cpp:
undefined reference to `std::ios_base::Init::~Init [in-charge]()'
collect2: ld returned 1 exit status
-mwindowsオプションをつけても駄目でした。
CプログラムのHelloWorldはコンパイルできました。C++で失敗するのは何が原因なんでしょうか?
g++ console.cpp
>>380 そっ・・・そんな事だったのかー!
ありがとうございます・゚・(ノД`)・゚・
>>378 初めて見た時にさ…「ミチャッタ━━━━(゚∀゚)━━━━ッ!!」て叫んじゃったよ。
いや、まさかあんなことになってるとは思いもしてなかったから、ショックでかかった。
最近、MinGWでクロスコンパイラがどーしても欲しくなってGCC3.2をソースから
自前でビルドしなおすことになったんだけど…
「マタミチャッタ━━━━(゚∀゚)━━━━ッ!!」て叫んだよ。
当たり前なんだけど、ただひたすら要求とバグ修正が積み重ねられてるばかりで、
方向性が定まってメンテその他が行われているわけじゃないから、ニッチなことしようとすると
MinGWのMLにある情報とかも必ずしも正解ばかりじゃないし、本当自分だけが頼りで
あちこち直したり書き換えたり目に見えてるバグ取ったりしなきゃならない。
で、それでもなんとか動くコンパイラのゲットに成功したんだけど、達成感よか
生きて帰れてよかった感の方が強かった。
本当、日ごろメンテしてるハカーの皆様には頭下がるわ。
スキルを積むとは、触らぬべき場所を感じ取る能力をつけることである
- デフォルトの名無しさん
そんなこと言われると見たくなっちゃうやつ...priceless
>>379 俺も最近mingw使い始めたけど全く同じミスで数時間悩んだ。
>>379 console.cpp: In function `int man()':
console.cpp:7: error: syntax error before `:' token
/usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../libcygwin.a(libcmain.o)(.text+0x7c): undefined reference to `_WinMain@16'
collect2: ld returned 1 exit status
>>386 undefined reference to `std::cout' って出てる時点で、
std::cout が入ってるライブラリをリンクすればいいんだな、と気付きさえすれば、
悩むことなく gcc console.cpp -lstdc++ にたどり着きませんか?
>>387 あ、ごめん。
>>379のman()はミスで実際はmain()です。下のエラーもmain()と正しく書いたものによる結果です。
cygwinでgccを使ってC言語を勉強しています。
cryptを含んだ部分が以下のようなコンパイルエラー
が出てしまいます。
何か解決法はないでしょうか?ご教授お願いします。
コンパイルオプションで-lcryptはつけています。
In function `main':
warning: passing arg 1 of `strcpy' makes pointer from integer without a cast
warning: passing arg 1 of `strcpy' makes pointer from integer without a cast
/tmp/cc657vty.o(.text+0x41):crack.c: undefined reference to `_crypt'
/tmp/cc657vty.o(.text+0x6a):crack.c: undefined reference to `_crypt'
/tmp/cc657vty.o(.text+0x93):crack.c: undefined reference to `_crypt'
/tmp/cc657vty.o(.text+0xb6):crack.c: undefined reference to `_crypt'
collect2: ld returned 1 exit status
ソースは以下のとおりです。
/* gcc crack.c -lcrypt */
#define _XOPEN_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(){
const char* pass="password";
const char* salt="Uh";
const char* pass2="passwore";
char p[14],q[14];
printf("%s=%s\n",pass,crypt(pass,salt));
printf("%s=%s\n",pass2,crypt(pass2,salt));
strcpy(crypt(pass2,salt),p);
strcpy(crypt(pass,salt),q);
printf("%d\n",strcmp(p,q));
return 0;
}
crypt() より前に、strcpy() の使い方を学んだほうが良いと思うよ。
>391
指摘ありがとうございます。
strcpyの部分修正してみたんですが、
修正前と同じようなエラーが出ます。
> warning: passing arg 1 of `strcpy' makes pointer from integer without a cast
> warning: passing arg 1 of `strcpy' makes pointer from integer without a cast
これでわかるのは、crypt() のプロトタイプがちゃんと include され
ていないこと。cygwin では crypt.h を include する必要がありそう。
crypt() の実体は libcrypt で合っているようだけど、
/* gcc crack.c -lcrypt */
ほんとにこの通りにコンパイルしてます?
crypt.hをインクルードしたらできました!
ありがとうございます!
395 :
デフォルトの名無しさん:04/09/17 20:05:29
質問させてください。
以下の3つのヘッダファイルをインクルードしています。
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
何もオプションをつけなければコンパイルできますが、
-mwindows -mno-cygwin オプションのうち1つ以上をつけてコンパイルすると
以下のエラーが発生します。
test.c:1:24: netinet/in.h: No such file or directory
test.c:2:24: sys/socket.h: No such file or directory
test.c:3:23: arpa/inet.h: No such file or directory
これはMinGWの制限なのでしょうか?この解決策はありませんか?
mingwにposixレイヤは無いから
素直に-mno-cygwinを外してコンパイルしる。
397 :
395:04/09/18 00:26:09
>>396 Win32APIを使ってcygwin1.dllに依存しないGUIアプリケーションを作成したいのですが…
やっぱり無理なんでしょうか…
何故そうなるw
>>397 そうしたければ
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
この辺使わないでWinSock使って下さい
400 :
デフォルトの名無しさん:04/09/18 03:31:50
こうして見るとGNU関係のWindows物って中途半端なやつばっかりだね
使えねえ団体だな
cygwin1.dllを使った場合って作ったソフトもGPLに縛られちゃうんだっけ?
ばりばりGPLでっせ
悲惨ですな
それが嫌ならVisualなんたらを買えってことでいいんでない?
405 :
デフォルトの名無しさん:04/09/22 11:35:58
sygwin + gcc3.3.3 + STLport4.5.3
うまく動きますか?
sygwinだと多分動きません
407 :
デフォルトの名無しさん:04/09/22 11:42:56
>>405 間違いました。。
cygwin + gcc3.3.3 + STLport4.5.3
うまく動きますか?
409 :
デフォルトの名無しさん:04/09/23 01:44:11
cygwinのldでブートセクタを生成しようとしてるんですが
ld -T boot.ls -o boot boot.o
したら
ld: PE operations on non PE file.
というエラーになって生成できません。
AMD k6-2のLinuxではちゃんとブートセクタが生成されて動作できました。
Cygwin版特有のオプション等が必要なんでしょうか?
解決方法を教えて下さい。
よろしくお願いいたします。
boot.ls
-----------------
OUTPUT_FORMAT("binary");
MEMORY
{
body : org = 0, len = 510
sign : org = 510, len = 2
}
SECTIONS
{
.text : { *(.text) } > body/* executable code */
.rodata : { *(.rodata*) } > body/* constants */
.data : { *(.data) } > body/* initialized data */
.bss : { *(.bss) } > body/* uninitialized data */
.sign : { SHORT(0xAA55) } > sign/* boot signature */
}
410 :
デフォルトの名無しさん:04/10/06 15:19:27
起動するとウインドが一個出てきて、逝ってよし!ってかいてあって
下にテキストウインドウがあって、何か入れると
その入力文字が逝ってよしの下に出てきて
入れた文字が“はい”だったら、10カウントしてウインドが閉じる。
そんなプログラムのソースをだれか見せれ。
おながいしまふ。
>下にテキストウインドウがあって、何か入れると
>その入力文字が逝ってよしの下に出てきて
ここで「はい」以外を入力したときはそのあとどうするの?
スクロールさせてまた「逝ってよし!」って出すの?
ウインドウ閉じて終了でつ
せめてフローチャートきぼんぬ
で、質問者はもういない。と。
本気で作って欲しければ書き込んだスレくらいウォッチし続けるよな。
Eclipse+CDTでGNU make走らせてるんですが、
makefile中にobjdump書いたらGNU makeがエラーを出します。
これってobjdumpの出力先を" > hogehoge.lst"にしている処理が
いけないみたいなんですが、objdumpをコマンド入力からやる以外に
解決法ってあるのでしょうか?
>414
居るけど。
フローチャートかけるくらいなら、訊くわけないじゃん。
おいフローチャートも書けないのかよ
フローチャートなんて書く気がしない。
文章(箇条書き無し)これ最強。
421 :
デフォルトの名無しさん:04/10/11 01:26:10
(1)プログラムを起動する
エクスプローラーでダブルクリック
(2)ウインドが一個出てきて、逝ってよし!って書いてある。
逝ってよし!の下にテキスト記入欄が開いている。
(3)文字をいれてエンターキー押す
(4)いれた文字がテキスト欄の下に表示される。
(4)’いれた文字が “はい”だったら 5秒後にウインドウが閉じ、プログラム終了。
これで伝わるでしょうか?
よろしくお願いします。
で、それがこのスレとどんな関係が?
>>421 いれた文字が「はい」以外だったら(4)のあとどうするんだ?終了するのか?
ぷぷぷ
426 :
421:04/10/11 05:25:55
>>424 激しくありがとうございます!!
でも動かし方がわかりません!!!
ポカーン
スレがとことん汚れたな。
430 :
デフォルトの名無しさん:04/10/11 11:49:15
ツマンネ
433 :
デフォルトの名無しさん:04/10/11 19:40:32
424さん ありがとうございます。 名前変えましたがやってみました
$ gcc -O2 -Wall -mwindows -DSTRICT itteyoshi.cpp -o itteyoshi.exe
iii.cpp:124: error: 'tcscmp' undeclared(first use this function)
iii.cpp:124: error:(Each undeclared identifier is reported only once for each function it appearus in.)
iii.cpp:143: error: '_tcslen' undeclared(first use this function)
$
なあおまえら、GCCな俺になんか質問ある?
あと3時間の寿命だけどさ
ID表示無しか
424じゃないが、-mno-cygwinも追加するとどう?
>433
_tcscmp や _tcslen は tchar.h で定義されているマクロです。
tchar.h の中に _tcscmp や _tcslen はありませんか。
>>433 エラーの行番号が1つ小さいんだけど。
どっか1行削ってません?
#include <tchar.h> を削ってたりして……
皆様ありがとうございます。
MinGW¥binにパスを通したら 動きました。!
ところが
表示が
・$B@B$C$F$h$7!*・(B
と出てしまいます。
コピペではなく、手打ちしたので、半角全角が混ざっているかもしれませんが
それが表示されたのは事実です。
$B ビッグなナニが
@B バックから
$C カミング!カミング
$F ふぁっく ふぁ〜く
$h ほーるへ
$7 セブンラーッシュ
!* (自主規制)
・(B (バードッ)
・・・いまいち
>>440 ソースファイルの日本語部分が ISO-2022-JP でエンコードされちゃったんですね。
エディタは何を使いましたか。
例えば「サクラエディタ」ならば保存時に文字コードを選択できるので
必ず SJIS (Shift_JIS) で保存するようにして下さい。
>>444 どうもありがとうございます。仰る通りでした。
皆様、どうとありがとうございます。
これで取っ掛かりができました。
446 :
デフォルトの名無しさん:04/10/14 01:57:55
EUCが入ってるのCソースがコンパイルできないことがあるんすけど、
cygwinだとどーすればいいの?
448 :
デフォルトの名無しさん:04/10/16 03:14:09
cygwinのgccからコモンダイアログを使用したいんですけど、
方法ありませんでしょうか、googleなどで一通り調べたんですが見つからなくて。
よろしくお願いします。
450 :
デフォルトの名無しさん:04/10/16 05:00:45
>>449 勉強不足で申し訳ありませんが、具体的な方法、ソースコードなどご存じでしたらお教え頂けませんでしょうか、どこかのHP等でも結構ですので、よろしくお願いします。
cygintlがないと起こられるんだけど、どうしたらいい?
453 :
デフォルトの名無しさん:04/10/16 20:17:07
あcygintlとcygintl-1と-2はあるんだけど-3がないのよ。
あ、Reinstall選んだら大丈夫に成ったごめん
455 :
デフォルトの名無しさん:04/10/18 15:19:34
Windows Services for UNIX 3.5を使えばCygwinと同等の機能が構築できるんでしょうか?
あと、両製品の違いなんかも教えてくださいm(__)m。
456 :
455:04/10/18 17:09:30
すいません
他のところにスレありましたね
失礼しました
cygwinのsetupをもう一回してpatchを追加
462 :
デフォルトの名無しさん:04/11/10 13:32:50
#include <windows.h>
#include <ras.h>
int main() {
RASCONN conn;
DWORD entnum, size = sizeof(RASCONN);
int len; char buf[12];
ZeroMemory(&conn, size); conn.dwSize = size;
RasEnumConnections(&conn, &size, &entnum);
len = wsprintf(buf, "%d",entnum);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, len, &size, NULL);
return 0;
}
というファイルをgccでコンパイル&リンクすると-lrasapi32を指定しているのに
>$ gcc -lrasapi32 r.c
>/cygdrive/e/tmp/ccazArKZ.o(.text+0x7e):r.c: undefined reference to `_RasEnumConn
>ectionsA@12'
>collect2: ld returned 1 exit status
とエラーがでてしまいます。vc6では
cl r.c /link rasapi32.lib user32.lib
でOKなのですが
gcc r.c -lrasapi32
おおおリンク成功しますた
ありがとうございます
MinGW (or Cygwin)用のgdbserverってどこかにありませんか?
cygwinでSTL使いたいときってどうすればいいの?
#include <iostream>
>466
普通に。
強いて言うなら -lstdc++ かな。
ああ、それ忘れがちだな
ありがたう
それってコンパイラにg++つこたらデフォにならない?
gccのバイナリ名をi686-maid3-gccにすると萌える
いつの間にかDirectX9のライブラリが入ってるね。
完璧じゃないみたいだけど。
474 :
デフォルトの名無しさん:04/11/15 14:26:56
DirectX 9 ?
9対応のライブラリがもう組み込まれているのか
ライブラリっつっても、COM メインだからほとんどヘッダファイルだけだし
ヘルパー関数のサポートは無さそうだね。
477 :
デフォルトの名無しさん:04/11/17 11:50:20
日本語パッチ作ってる人には感謝してるんだが・・・本家に取り込んでもらうほうが筋じゃない?
ハラキリ国独自の言語を作る方が先だ!
ハラキリ丸 - HARAKIRI MARU
最近某国でクビキリされた青年の影響で
ハラキリ国がクビキリ国と誤認識されるのが唯一の心配でさあ!
もっと大河ドラマとかでハラキリの印象度を高めないとあかん
日本には元々首狩りの習慣があったのを知らないのか?
市中引き回しの上磔獄門なんて刑の方が余程残酷だと思うのだが。
スレ違い話題は他所でやってくれ
cygwinでwmakerを動かしてます。
マウスホイールでワークスペースを切り替える方法を教えてください。
出来ていたのですがWin再インストールしてしまい
設定がわからなくなってしまいました。
486 :
デフォルトの名無しさん:04/11/22 15:07:33
487 :
デフォルトの名無しさん:04/11/24 17:01:56
objdumpでVC6でいうdumpbin /exports 相当のことをやる
オプションを教えてください。
-x で全部出る出力の [Ordinal/Name Pointer] Table
以下数行だと思うんですが。
#include <windows.h>がエラーになります。(no such file or directory)
コンパイラはgccなのですが、どうすればよろしいでしょうか??
>>488 Cygwin ですか?
それなら Cygwin のインストーラで WIndows SDK のヘッダーをインストールしないとだめ。
gccつってもなぁ。mingwならあるはずだし。
大学で使っているものなので、いまいちわからないです。
MinGWなどは見たのですが、使い方がわかりません。
アホな質問ですいません。
大学の先生に聞けばいいじゃん
cygwinでiopermをリンクしてシリアルポート(0x3F8)を直接叩いてるんですが
どうも反応しません。パラレルポートは反応します。
同じプログラムでlinux上では動いています。
どなたか教えてください。
495 :
デフォルトの名無しさん:04/11/26 07:52:10
よくあることです
gcc g++ をつかって直接Windows上で動かせるモノって作れますか?
CUIじゃなくて実行モジュールをクリックして機動できるようなコンパイル
オプションとか・・・。
498 :
デフォルトの名無しさん:04/11/27 22:40:41
age
>>497 Win32APIの使い方を知ってれば大丈夫
WideCharについて質問。
wchar_tの実態はshort intで、一文字2byte固定。文字or文字列を入れる時はリテラルの先頭にLを付加する。
TEXT("文字列")を使うと、UNICODE指定した時としてない時でマクロが別々に展開してくれる。
で、libcじゃwchar_tは内部でUCS-4/UTF-32を使ってて4byteっていうのが調べてるうちに出てきて、どっちやねん
ってのが一つと、wchar_tの場合標準入出力に何使えばいいの?wcout使おうとしたらエラー出た。
STLPortを使おう!!
>>503 う、してるかも。えーと、えでもlibcってCの標準ライブラリで、glibcが
それのGNUの実装だよね?glibcが独自に拡張してるってこと?
実体はlongあたりなのかな?
>>504 つまり、GCCにもともと付いてるライブラリじゃwcoutは使えないって事?
>>505 拡張っつうかwchat_tの中身は標準じゃ定義されてない。
wchar_tの中身は気にしちゃいけないことになってるけど、glibcだとUnicodeに
固定されてる。Cygwinで使われてるnewlibは一文字2byte。
>>505 >つまり、GCCにもともと付いてるライブラリじゃwcoutは使えないって事?
そういうの調べるのも面倒でSTLPortに逃げ(?)た。
えーと、そこで言うUnicodeってのはUCS-4ってこと?
wchar_tはワイド文字を扱うものだけど、中身は特に決められてない。
基本的にwcxxx関数を介した操作することでブラックボックス化されてて
内部コードや、型の大きさは考えるな。
wchar_tの中身はそれぞれ
VC/BCC = 2byte UCS-2/UTF-16
glibc = 4byte UCS-4/UTF-32
newlib = 2byte ?
mingw = ? ?
って理解になりましたけどOK?
>>507 つまり、STLPortなら何も考えずにwcoutとか使えるって事っすね。ありがとうございます。検討します
>>508 VCやBCC、mingwn、cygwin等のwchar_tが2byteでUCS-2なのはwindowsがそういう糞仕様だから
あーなるほど、Windowsに関してはライブラリじゃなくて、Windows依存なんすね。
糞な理由教えてください。とりあえずUCS-2で問題ないような気がするんですが。
甘いですか?
それと、GCCって2.95からの変更ってどの程度ありました?いや、邦訳されてる
MANが古くて。コマンドラインオプションは2.95のMANの内容でとりあえず問題ない
という理解で大丈夫ですか?
>>509 考えるべきことは結構あるよ。
まずコンパイルで挫けるかも。
まあわかんないことがあったら、
ここもあるし、あるか判らんがSTLPortスレで訊くのもいいだろう。
出来上がったバイナリがデカくなるのは覚悟しておいてね。
そうなんすか。大人しくwprintf使っときます。おわ、printfのパラメータ忘れてる。。。
514 :
合流あげ:04/12/08 23:44:08
ここは廃棄するの?
ここに統合したの(^^;
519 :
デフォルトの名無しさん:04/12/13 10:27:56
0つけたら8進、0xつけたら16進、つけなかったら10進
0bつけたら2進 になるとチョー気持ちいいんだけどなぁ
520 :
デフォルトの名無しさん:04/12/13 10:57:20
>>519 質問です。
0 は 8進法なんですか? 10 進法なんですか?
10進法です。
8進法なら00だろが。
>>521 ちがう。8進だ!
0 は10進では表せない。
0 は 2進 ですYO!
2進でも、8進でも、10進でもどれでも0は0
Cでは0は8進リテラル。
それがどうかしましたか?
gccスレを何でここに合流させたん?
一子相伝なgccスレを?
なんかいつのまにか変なのに占拠されてる…
ここはgccのみのスレではなく、MinGWやCygwinでの開発一般についてのスレだと思っていたんだが、違うのか?
MinGW スレもここに統合しよう、うん。
>>528 「占拠されてる」ってほど増えてないじゃん
数が問題なわけではないでしょ
GCCは統合するなよ。
>>531 数も重要なファクタだと思うよ
分けようと思えばいくらでも細分化が可能なわけだから
スレ立てりゃいいだけの話なのに、どこから統合なんて出てきたんだ?
立て直そうか
1. cygwinスレ(既にある)
2. mingwnスレ(既にある)
3. gccスレ
4. cygwin+mingwnスレ
5. cygwin+gccスレ
6. mingwn+gccスレ
7. cygwin+mingwn+gccスレ(このスレ)
じゃ3456と立ててくれ
様々なhostで動き、様々なtargetを持つGCCと、
プラットフォームの一つでしかないMinGWあるいはCygwinが何故一緒くたにされるのか理解できない
539 :
デフォルトの名無しさん:04/12/14 23:24:45
スレタイに入っているんだから仕方ない
スレタイの+ってOR演算だったのか。
しばらくcygwinをつかってなかったのですが、
久しぶりにcp A Bとうってみたところ、できたBのパーミッションがおかしいです。
プロパティでフルコントロールにチェックを入れないと使えないファイルが出来上がります。
何が原因でこうなったのかわかりません。
心当たりのある人っています?
.bshrc
mask=
gccってWindowsCE(CPU:mips)上で動くように出来ますか?
多分gccをソースからコンパイルする時にmips用のオプションつけて
やればできるような気がするのですが、cygwin上でどう操作すれば出来るのか
わかりません。
cygwin 上で、まず mips ターゲット cygwin ホストのクロス gcc を作っ
て、そのクロス gcc を使って mips ターゲット mips ホストの gcc を
ビルドする。という方法で理論的には可能。
gccってどっからどうやっておとすの?
>>546 クリスマスが近いからってそう焦るなよ。
女をおとすってのは、一筋縄じゃ行かないぜ。
>>544 おおむね
>>545の方法で逝けるが
cygwin 上で --target=mips --host=mips のように configure して
スタンドアロンコンパイラのバイナリを作ってしまうことも不可能ではない。
「カナディアンクロス」でぐぐってくれ。
ただ、カナディアンクロスが成功させるのに必要な条件は、
「ターゲットのライブラリ類が揃っていること」だったりするので、
まずは第一歩として
>>545のように、ターゲット生成が可能な
環境をビルドするハメに陥る、だろう、きっと。
Linux host で、「mips4-elfバイナリを吐くCygwinバイナリ」を作ったことはある。
551 :
デフォルトの名無しさん:04/12/26 13:01:03
cygwin内のmakeを使い、プログラムをコンパイルします。
gccを使わずにclを使うつもりなんですが、この場合ライセンスはどうなるのでしょうか?
生成物であるバイナリがcygwin.dllを参照しなければ、OKと考えていいんでしょうか。
>>551 キミにとって「ライセンスがOK」がどういう状態が何なのか、説明し
てもらわないと誰にもわからない。
553 :
551:04/12/26 15:07:25
あ、すんません。
作成したプログラムがGPLになるかどうかってことです。
もともとソースごと配布しようと思っているので、問題ないといえばないのですが・・・
と思って検索してたら
http://www.sixnine.net/cygwin/translation/faq/faq_7.html >コンパイルされた実行プログラムが Cygwin ライブラリを使わないように
>ツールを修正しない限り、あなたがコンパイルしたプログラムもまた、
>誰もがソースコードを利用可能である GPL で配布されるフリーソフトウエアになる
とあるようですね。
コンパイル後のバイナリからはCygwinライブラリを呼ぶことにはならないと思うので、
GPLでなくてもかまわないということかな。
clってvcの? だったらvcのライセンスじゃないの。
makeは関係ない。
呼び出し規約はそろえてるか?
__fastcallと__stdcallだった気がするけど気がするだけなんで
自分で調べてください。
extern "C" なら ok だったけど C++ なのはなあ
DLL内で生成された、COMっぽいポインタを返してるね
vtblの構成やcalling conventionが違うだろうから、
gccからは使えんと思う
逆に言うと、合わせられれば呼べる
と思ったけど例外を使ってるっぽいな、
こりゃどうあがいてもむりだべ。
ああ…やっぱりダメですか。ありがとうございます参考になりました
>>556-558 仕方ないのでMSVCでもう一皮ラッパー作って
gccからはC規約で呼んでみることにします…
ううむ、美しくないけど仕方ないかぁ(;´Д`)
gccでなければならない理由でもあるのか?
>>555 そもそもコンストラクタ周りの生成規則が違うだろうから無理
例外スロー問題もあるからDLLのクラスならDLL内だけで完結する必要がある
素直にCインターフェースでラップするしかない
C++がクソな理由の1つ
というかDLLの仕様定義がCインターフェースまでしか考慮されなかったのが原因。
これはWindowsが出来た時代を考えれば仕方がないが。
もっとも、UNIXでも共有ライブラリの参照問題として同じ様な問題がある。
解決法は同じコンパイラ、ライブラリを使う以外ない。
C# はその辺を解決しようとしてるんだけどね……
新仕様のDLLとローダとリンカをを作れば無問題
C#っていうか.NETだな
.NET
同じ事をSUNがやってたら.NETに触る気になったかも。
.NETにしたところで
Windows\System以下に全部放り込む仕様は改善されたのかね
バージョン問題には何時になったら開放されるのかね
まあスレ違いですな
568 :
デフォルトの名無しさん:05/01/08 14:24:12
filenoが通らないからstdio.h見たらfixmeとか書いてあった。
ウンコー
Mingwnでcoff libをリンクできますか?
一度試したのですがそのときは実行するとエラーになりました。
ちなみにbcc32 cl open watcomは問題なかったです。
Mingwnってなんですか?
ふぃれふぉx
初心者ですまそ。
例えば
-O -O2 -O3
とかコンパイラオプションが重複したらどれが優先されるの?
575 :
574:05/01/25 15:35:33
コンパイラはgccです
>>575 $ man gcc
〜・〜・〜・〜・(略)〜・〜・〜・〜・
> 複数の -O オプションを指定した場合は、レベル番号の有無に関わらず、最後に指定したものが有効になります。
〜・〜・〜・〜・(略)〜・〜・〜・〜・
577 :
デフォルトの名無しさん :05/01/27 13:52:49
cygwinインストールしたけどgcc使えないッス
どうしたらいいッスか?
>>577 「使えない」をもちょっと詳しく
なんかエラーでも出てるの?
あきらめればいいっス
gccと関連パッケージをsetupしていない予感
581 :
デフォルトの名無しさん:05/01/27 14:12:54
bash: gcc: command has not found
582 :
デフォルトの名無しさん:05/01/27 14:19:13
>581
はい、cygwinのFAQ見てgccをセットアップしてね♪
583 :
デフォルトの名無しさん:05/01/27 14:23:37
単に入れ忘れ
Develのとこ、Defaultのままで入れたんじゃないのかしら
585 :
デフォルトの名無しさん:05/01/29 01:50:23
readelfやobjdumpってPEのヘッダを読めるようにならないのかな?
そういうパッチって実はもうある?
objdump はかなーり昔から PE に対応してるよ。
readelf は対応するわけないでしょーが。
>>586 ああ、オオボケかましてたスマヌ。objdump -Dが
ヘッダの中身をみれるオプションだと思ってた。
正しくは-x。readelfはいらないな。
588 :
名無しさん@Vim%Chalice:05/02/03 11:29:21
mingwnってなんですか。
ネットで調べても全然載っていない・・・
既出
mingnwってなんですか。
ネットで調べても全然載っていない・・・
mingw
ただのタイプミスだろう
593 :
デフォルトの名無しさん:05/02/03 22:49:45
タイプミスの悪寒
タイプ嬢
cygwinをインストールしたのですが、
"notepad" "calc" "explorer" 等のコマンドが使えません。
なにか設定が必要でしょうか?
596 :
デフォルトの名無しさん:05/02/06 12:27:21
サーチパスの問題
WH_GETMESSAGEで,全てのアプリケーションへのメッセージをフックする
アプリを作っています。
自アプリに対するメッセージはちゃんとフックしてるみたいなんですが
他アプリに対してはフックしてくれないみたいです。
たとえば
ttp://www.tamanegi.org/prog/src-guide/ ここの「wheelfix」は,バイナリで提供されている分はきちんと動きました。
で,自分でソースをダウソして make すると,ぜんぜん期待する動作になりません。
なのでソースの問題ではなく,コンパイル環境の問題だと判断しました。
(実際,VC++で自作したアプリは,きちんとフックできます)
gcc 3.3.1 (on cygwin) と 3.4.0 (on mingw) の両方で試しました。
一体アタシ何が悪いんでしょうか。
フックプロシージャがDLL内でないとかじゃないよな?
>599
レスサンクスコ。
それはないです。
↑で紹介した「wheelfix」も,自分で make するとダメダメだし。
うわー。
gcc 3.4.2 で「wheelfix」を make して実行したとです……
みるみるうちにメモリ使用量が増えていったとです……
愛用の「サクラエディタ」がメモリを喰らい尽くしたみたいでした。
サクラエディタとグローバルフックにどんな関係が?
もうわけわかりません。
601 :
デフォルトの名無しさん:05/02/07 21:19:55
>>598 俺もソレ今ハマッテル。
>自アプリに対するメッセージはちゃんとフックしてるみたいなんですが
>他アプリに対してはフックしてくれないみたいです。
クソ、ゼンゼンワカンネエゾ!!!
頑張るだけ無駄か???
どうしようどうしよう(´・ω・`)ショボーン
「他アプリに対してはフックしてくれない」 というのは何で判断したの?
>>598のやつはcygwinのsetup.exeで入れたgcc 3.3.3でmakeしてちゃんと動くが
>>598のやつって、-g付きでコンパイルしてあるよな…なんでだろ。
?
取り乱した。
>>602 の発言で我に返って確認してみた。
フックされてる。
プロセス共有変数とnewとかallocatorに問題があった。恥ずかしい。
>>598をよんで「コレだコレに違いない!コンパイラが悪いんだ!」などと思い込んでしまった。
すまなかったgcc。ありがとうgcc,
>>602。
gccは3.2.3 on mingwでし。
>>603 べつにおかしかないでしょ
配布用のバイナリはstripした方がいいかもしれんけど
みんなレスサンクスコ。
>602
自分のウィンドウに飛んできたメッセージをつらつらと表示するプログラム作って
まったりと観察しています。
ていうか普通はきちんとコンパイルできてきちんと動くんですよね。
実際,↑で紹介したサイトで配ってるバイナリはきちんと動いてるわけだし。
もうmingw再インストローリングします。
ハッキンガー気取りで弄くって,変なところに変なものをつっこんだに違いないです。
バチが当たったんですね。うあー。
あと最近よくアクセス規制に巻き込まれるのですが
もろゆきさんは私の事が嫌いなのかね。
>>607 > あと最近よくアクセス規制に巻き込まれるのですが
> もろゆきさんは私の事が嫌いなのかね。
ときどきいるよね、こういう自意識過剰な人。
仮名のケイコさんを自分のこと言われたと思って文句つけたりとか。
もろゆき?
>608
(;´Д`)
もっとエレガントでセクシーな突っ込みはできんのかね。
そうそう,忘れてました。
新しいbinutilsをダウンスコしたら,正常になりました。
みなさんもgccやg++だけでなく,binutilsも忘れずに更新しましょうね。
忘れるのは私だけですかそうですかそうですねアハハ。
orz
XDrawText16()
の使い方が分かりません……。Xサーバーで作ったWindowに漢字を描画したい
んですけど……。後半二つの引き数、XItime16とFontっていうのがマニュアル
読んでもよくわかりません……。
XChar2bとかXLoadFont()とか意味不明で……。
使用例とか教えていただけると激しく助かるので、よろしくお願いします。
613 :
デフォルトの名無しさん:05/02/14 03:33:43
なんかサーバとまってない?
それだけならwinsockのでいいんでわ
cygwinって毎日アップデートするの?
万度癖
WindowsにMinGWをインストールしてPATHを指定したのですが、
たとえばgcc helloworld.cpp とやると、
D:\Project\C++>gcc helloworld.cpp
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x2e):helloworld.cpp: undefined
reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char,
std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x3b):helloworld.cpp: undefined
reference to `std::cout'
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x40):helloworld.cpp: undefined
reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<<
<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, c
har const*)'
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x49):helloworld.cpp: undefined
reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x76):helloworld.cpp: undefined
reference to `std::ios_base::Init::Init()'
C:\DOCUME~1\masa\LOCALS~1\Temp/cc8ebaaa.o(.text+0x95):helloworld.cpp: undefined
reference to `std::ios_base::Init::~Init()'
と、エラーが出てコンパイルできません。
どうしたらいいんでしょうか?
g++を使え
>>618 あ・・・・コンパイルできました。
gccとg++って何が違うのでしょう・・・
寿司。
gccはCコンパイラ
g++はC++コンパイラ
-lstdc++
ばかばっか
素晴らしい捨て台詞だことw
makeファイルって自分で書くのですか?
いろいろリファレンス読んだけどいまだによくわからない。
どうやって覚えたか参考までに聞かせてください。
>>626 小さいのだと自分で書くけど、大きいのはautoconf/automakeで自動生成するのがよくやられてるかな。
autoconf はともかく、automake にメリットを見出せるほどの規模なんてそうそう無い
こんなところの住人乙
>>629 autoconfを使うためにMakefile.inを手書きするくらいなら、
素直にautomake使う方が断然楽。
autoconfだけを使うという方がよっぽどメリットないと思われ。
632 :
デフォルトの名無しさん:05/02/26 18:55:18
ShellExcuteExを使ったアプリをgdbでデバッグしているのですが、時々
---Type <return> to continue, or q <return> to quit---
というプロンプトが出てきて一時的に中断されてしまいます。
これを抑制する方法はありますか?
~/.gdbinitに
set height 0
を指定する事によって抑制できているっぽいです。
問題は一応解決したのですが、何故ゆえこういうプロンプトが
出てきてしまうのかご存じの方いらっしゃいましたら教えてください。
>>631 俺autoconfは使ってるけど、automakeは使ってないよ。
Makefile.in の手書きって、規模が小さければ全然
難しくない。make程度のことをきちんと理解できない
うちからautomakeに頼ると、自分で特殊なルールを
追加したいときに困るだけだと思うけど。
>>626 「UNIX プログラミング環境」のmakeの項がコンパクトに
まとまっててお勧めだったような。cygwin 環境で使って
るなら持っていて絶対損はないと思う。amazonでは新品
はもう手に入らないみたいだけど、ジュンク堂とかには
まだ置いてあったような。
大学の先輩が autoconf/automakeを使って configureスクリプトを
組み込むと、組み込んだプロジェクトも強制GPLになると話していたのですが
本当ですか?
GNU make を使うと強制GPLになるのか?
GCC を使うと強制GPLになるのか?
>>635 頭の悪い奴ばかりの大学なら早めに逃げた方が良いぞ。
d/rdy
autoconfが生成したマクロがソース中に入り込むこともあるから微妙。
*.in の中身をちゃんと把握せずコピペとかしてると、
知らないうちにGPLなinline functionとか使われたりする可能性もある。
ちゃんとチェックして道具として使ってりゃ大丈夫だけど、
バカが使うとGPLが伝染る。
ソフトウェアは著作権だからウザイよなぁ。
ウチのベアリングを使った車を流通させるにはウチの方針に従ってもらう
っていってるのと同じだからな。
こういうパーツに対して著作権の概念で縛るのはおかしいと思うんだけどね。
GNUは反対してるが、ソフトウェア業界はその上に特許権で2重の権利保護を要求してるしさ。
>>632-633 何故って、1スクリーンに収まらないからgdbが気を利かせてくれてるんでしょ?
>>640 商取引の場合はベアリングに対してお金を払うわけでしょ。
ベアリングをただで贈呈する代わりに車を流通する際にはうちの方針に従ってもらう
それが嫌ならお金をいただきます。
↑は全然問題ないけど?
GPLライセンスが嫌なら自分でGPLに触れないように作ればいいだけのこと。
人の作ったもんをただで使うわ自分の好きなように使わせろだ
いやなクレーまーですね。
VCだと、ライブラリをソース中で#pragmaで指定してリンクさせられたけど
gccでそういうことって可能ですか?
コマンドラインだと一々ライブラリを指定するのがかったるいし
make使うほどの規模じゃない…
んなことを2chに書いてる暇があったらMakefile書け
>>644 そこでautoconf/automake/libtoolですよ。
それはない
(´-`).。oO(GTK+/Qt 使うんだったら autotools は必須だけど、それ以外はどうでもいいや)
>>641 それが、特にメッセージを表示してないのにそういう表示が出るんです。
>>633 の方法で抑制出来たのが謎ですが・・・。
>>646 GNU Helloを見習ってgettextやtexinfoも使わんとな。
autoconf/make化したもののファイルを新規追加/削除するたびに
Makefile.am 変更→automake && autoconf && configure && makeと
時間がかかるのが難点
windows service for unixって、cygwinとはまたちがうんかね。
NFSやNISに対応とか書いてあるけどさ。
だれか使ってる?
>>652 「ちがうんかね」って、そんくらいぐぐれ。
はい。すみませんでした
【CygwinGCC&VC7でのSJIS⇔EUC変換の比較テスト】
EUC⇔SJIS変換を行うプログラムで比較。
VC7用にはiconv.libをビルドしてスタティックリンクさせた。
iconvの比較対象として、自前のEUC⇔SJIS変換関数を使った。
【測定結果】
VC7:
sjis⇒euc iconv版 3.328[sec]
sjis⇒euc 自前版 0.703[sec]
euc⇒sjis iconv版 3.906[sec]
euc⇒sjis 自前版 0.531[sec]
CygwinGCC:
sjis⇒euc iconv版 16.656[sec]
sjis⇒euc 自力版 8.266[sec]
euc⇒sjis iconv版 16.797[sec]
euc⇒sjis 自力版 8.062[sec]
【結論】
Windows環境において、
SJIS⇔EUC変換のためだけにiconvライブラリを使うメリットは無い。
【VC7でのUNICODE⇔EUC変換の比較テスト】
iconvを用いて一挙にUNICODE⇔EUC変換を行う場合と、
MultiByteToWideChar(),WideCharToMultiByte()と自前SJIS・EUC変換関数を使って
UNICODE⇔SJIS⇔EUC変換を行う場合を比較する。
【測定結果】
unicode⇒euc iconv版 2.625[sec]
unicode⇒sjis⇒euc 自作版 1.156[sec]
euc⇒unicode iconv版 1.704[sec]
euc⇒sjis⇒unicode 自作版 1.046[sec]
【結論】
Windows環境において、
UNICODE⇔SJIS⇔EUC変換のためだけにiconvライブラリを使うメリットは無い。
自力で2段階変換したほうが速い。
何を今更
>651
Makefile.am 変更しただけなら、automake hoge/Makefile → ./config.status hoge/Makefile → make
で良くない?
659 :
デフォルトの名無しさん:05/03/20 05:18:29
アホな質問ですみません。
cygwin をインストールしたのですが、cygwin で Cソースファイル をコンパイル・リンクするには
どうすればいいのでしょうか?
\cygwin\bin を見ても、exe ファイルが多すぎてどれが何なのか分かりませんでした。
readme を探してみたのですが、いろいろなディレクトリに散らばっていて
どれから読めばいいのか分かりませんでした。
ググってみてもあまり期待通りの情報が得られませんでした。
とりあえず、思いついたことを一通り試しても分からなかったのでここに来ました。
どなたか宜しくお願いしますm(_ _)m
cygwinとか以前の問題だろ
661 :
659:05/03/20 05:31:00
>>660 すみません、cygwin が C コンパイラだと聞いてインストールしたのですが、
cygwin って一体何なのかが分からなくなってしまいました。
cygwin はどういうもので、Cソースをコンパイルするにはどうすればよろしいのでしょうか?
救いようも無いほどアホな質問ですが、このアホをどなたか助けてやって下さい。
よろしくお願いしますm(_ _)m
cygwinはwindows上でGNUツールを動かしてしまおうというもの。
強いて言えば環境に相当する。cygwin で C 言語プログラムを
コンパイルするには GCCという C コンパイラ(GNU ツール)を使う。
インストールされていればシェルから gcc --version と入力したら
バージョン番号を表示するはず。
インストール方法や使い方は cygwin サイトを見るか cygwin gcc を
キーワードにしてぐぐってぐぐってぐぐりまくれ。
663 :
659:05/03/20 06:28:47
>>662 ありがとうございます。
cygwin をインストールしても gcc などが使えなかったので、
(スレタイを読んで)試しに mingwn をインストールしたら gcc などが使えるようになりました。
今度は g++ についての質問です。
とりあえず HelloWorld を作ったのですが、
#include <iostream>
int main(int argc, char** argv)
{
cout << "Hello, world!" << endl;
return 0;
}
を g++ でコンパイルすると、
hello_iostream.cc: In function `int main(int, char**)':
hello_iostream.cc:6: error: `cout' undeclared (first use this function)
hello_iostream.cc:6: error: (Each undeclared identifier is reported only once
for each function it appears in.)
hello_iostream.cc:6: error: `endl' undeclared (first use this function)
というエラーメッセージが表示されてしまいました。
cout や endl は iostream をインクルードすれば使えると思ったのですが、
どうすれば cout や endl が使えるようになるのでしょうか。
たびたびすみませんが、宜しくお願い致しますm(_ _)m
>>663 std::cout std::endl
C++の質問はC++スレで。
>>664 すみません、スレ違いなのに答えてくださってありがとうございましたm(_ _)m
とりあえず後10年は掲示板で質問するな。
10年ってw
……と思ったけど、もれもプルグルムやり始めてから
7〜8年経って、こういう掲示板が現れたんだよな。
とりあえず標準で5年、ちと不器用なヤシは10年、
これが相場かな。
668 :
デフォルトの名無しさん:2005/03/24(木) 16:21:04
gcc -Lライブラリパス
この-Lライブラリパスを指定しなくてもデフォルトで検索してほしい場合
どのファイルにこのオプションを書き込めばいいんですか
specs
670 :
デフォルトの名無しさん:2005/03/24(木) 18:03:51
specsにどういう書式で書けばいいんでしょうか
ちったぁ自分で調べてみようとは思わないのだろうか?
gcc+specs+ライブラリ+パス での検索結果は 617 あって、
その中にはかなりヒントになりそうなものもあるわけだが。
cygwin使ってるんですが、
gccでコンパイルして出たコンパイルエラーが文字化けします。
ファイル名とか識別子などは化けないのに、
エラー文らしきものは全て化けます。
日本語(多バイト文字)で表示されてる事は無いと思うんですけど、何故だろう...
cygwinだろ?
メッセージがEUC-JPだけどコンソールはSJISしか理解しないので
文字化けしている、に10ペセタ。
>>673 >>674 Thanks!
LANG=enにしたら、化け直った。
最近使い始めたばかりなので、難しい。
>>671 環境変数LIBRARY_PATHにパスを設定するだけでよかったようです
結局specsってなんだったんですか??
677 :
デフォルトの名無しさん:2005/03/30(水) 19:30:51
Structure って名前の構造体を作った。
Structure s;
fwrite(&s, sizeof(Structure), 1, fp);
こんな風にして構造体のメモリ上での表現をそのまま
バイナリファイルにぶちまけた。
cygwin と Linux x86 で同じプログラム動かしてみたんだけど、
出力されたファイルをバイナリエディタで見てみると
メンバの順番が違う。
どっちも gcc だしプロセッサも同じインテル系だし
同じになるかと思ったんだけどなぁ…
そんな横着せんでちゃんとシリアライズせーよ
>>677 その手はタブー。コンパイルオプション変えるだけで
通用しないかもしれないよ。
678の言うようにがんがってシリアライズしる。
つ__attribute__((packed))
詰め物は適当に。
681 :
デフォルトの名無しさん:2005/03/31(木) 09:13:50
やっぱシリアライズしないとだめか……
実はこの構造体のどでかい配列を作ってシミュレーションとかしてて、
その途中経過つーかスナップショットをファイルにはき出した。
で、学校から家に持って帰ってきて続きのシミュレーションを
cygwin 上でやろうと思ったら値がめちゃめちゃに(笑
>>681 自宅にも同じLinuxを入れるか、学校でもCygwin使え。
どうでもいいが、gdbmのdbも同じ理由で全く互換性がないんだよね。復元するのが面倒でw
アラインメントを意識して配置すれば大抵は大丈夫だけどな
684 :
デフォルトの名無しさん:皇紀2665/04/01(金) 06:37:17
アラインメントが狂うとかじゃなくて、構造体の順番が変わるとかあり得る?
あるいはクラスメンバの順番が変わるとか。
十分あり得る
構造体は、少なくともCにおいては
メンバが順番に並んでいることが保証されている。
が、C++では保証されていないかも。
常識的に考えればPODな構造体は保証されそうなものだけど、
継承や仮想関数があるものは、メンバの並びについて仮定してはいけないはず。
メンバの数だけfread, fwriteすればいいだけだろ。
typedef struct{
int chinko[100];
int tanshou[1];
int otona[200];
}OGERETSU;
void fwrt(FILE *fp, OGERETSU *ogrt)
{
fwrite(&ogrt->chinko, sizeof(ogrt->chinko), 1, fp);
・・・・
}
字がうまいな
>>686 継承されたものは、継承された順番に並んでいるし、
仮想関数があろうとメンバの並びには影響しない。仮想関数のポインタテーブルも含めて。
「実装がこうだ」ではなく
「規格で保証されている」かが問題なのだが。
virtual継承って聞いたことあるかい?
いないな、識別子の先頭に2はいかんやろ。
実際問題として、両方86環境でCygwinとLinuxっていうんならパッディングの問題か
構造体の中で使ってる型が環境ごとに違うとかじゃないか?
エンディアンは関係ないだろうし。
>>677 ちょっと興味あるんで、
具体的に構造体の中身教えておくれ
>>693 >677じゃないけど、>682の言ってるgdbmの構造はLinuxでもリビジョンの違いでアライメントが変わる。
>>694 それは単にバージョン毎で構造体定義自体が変わったって話じゃ
でぃすとりのリビジョンが変わったらカーネル(とヘッダ)や
gccのバージョンが変わって当たり前なので不思議は無いな。
最近perlを勉強しはじめました。
ttp://www.activestate.com/activeperl/ でwin用のperlを落とし、cygwinからプログラムを実行するところまでは出来て
実行するとき $perl aaa.txt とやっています。
手元にある本だと、予め「#! /perlのフルパス」をソースに組み込んでおけば
$perl aaa.txt のperlを削れると載っていました。
また、win用のperlでは、「#!」が使えないとも書いてありました。
cygwinで実行する場合も、「#!」は使えないのでしょうか?
自分でも試しましたが、やはり実行できずにいます。
\#!
>>698 active perlを使ってるならcygwinのperlを使えばいい。
setup.exeのinterpreters→perl
C:\Perl に ActiveState perlが入っている状態で、できたけどな。
$ cat execactivestateperl
#!/cygdrive/c/Perl/bin/perl.exe
print "Hello!\n";
$ ./execactivestateperl
Hello!
>>698 コマンドラインで直接スクリプトファイル名だけ入力して起動したいなら、
ファイルに実行ビットを立てるのとそのファイルの置いてあるディレクトリをパスに追加するのを忘れずに。
#って、この説明の意味が判らないならUnix操作の基礎の基礎を勉強するか諦めろ。
703 :
698:2005/04/03(日) 16:55:57
>>699-702 レスありがとうございます。
type -a perl でパスを確認し
/bin/perl
/usr/bin/perl
/cygdrive/c/Perl/bin/perl
の3行が表示されました。
先頭に#!をつけてそれぞれ試してみました。(\#!も)
しかし、chmod a+x aaa.txt (chmod a+xは本に載ってました)と入力し
その後 aaa.txt と入力すると bash: aaa.txt: command not found と言われ
何も起きません。
ファイル実行の命令自体が出来てないような感じがするのですが
解る方いないでしょうか?
ちなみに cat execactivestateperl を入力すると
cat: exe〜:No such file or directory と言われてしまいました。
./aaa.txtとか?
705 :
702:2005/04/03(日) 18:41:34
>>703 だからさ、Unixの基礎の基礎を勉強してこいってば。
Unixコマンドの基礎だな。
707 :
1:2005/04/06(水) 14:09:18
709 :
デフォルトの名無しさん:2005/04/08(金) 19:02:56 BE:134971687-#
ソースコードの中で cygwin 環境下でコンパイルされているのかどうか、
さらに -mno-cygwin オプションがつけられていて mingw 用にコンパイル
されているのかどうかを調べることはできませんか?
何かマクロが定義されているならプリプロセッサで#ifdefできてウレシい。
>>709 Cygwin-gcc-3.3.3でCygwinの判定に使えそうなマクロ
-#define __CYGWIN__ 1
-#define __CYGWIN32__ 1
Cygwin-gcc-3.3.3で-mno-cygwinしたときに増えるマクロ
+#define _WIN32 1
+#define __MSVCRT__ 1
+#define __WIN32 1
+#define __MINGW32__ 1
+#define WIN32 1
+#define __WIN32__ 1
+#define WINNT 1
>>710 こういうのってどうやって調べるんですか。
>>711 $ echo "" | gcc -E -dM -
何かもっと短い書き方があったはずだけど…これか。
gcc -E -dM -x c /dev/null
gcc -E -dM -x c++ /dev/null
でzshだとこんなことが。
$ diff -ubwB =(gcc -E -dM -x c /dev/null) =(gcc -E -dM -x c++ /dev/null) | grep -E '^[+-][^+-]'
+#define __EXCEPTIONS 1
+#define __GXX_WEAK__ 1
+#define __WCHAR_UNSIGNED__ 1
+#define __cplusplus 1
+#define __DEPRECATED 1
+#define __GNUG__ 3
713 :
デフォルトの名無しさん:2005/04/09(土) 06:58:51 BE:28923326-#
>>712 zshだと、の後、何書いてんだかさっぱりわかんない(笑
=(〜) ってのは無名テンポラリファイルだと思いねえ。
gcc うんたら > tmp1
gcc うんたら > tmp2
diff -ubwB tmp1 tmp2 | (ry
みたいなもんだ。
UNIXだと<(〜)を使えばパイプを使うんで作業ファイルを作らなくてすむけど、
cygwinでは=(〜)しか使えないんかな? /dev/fd/*がなさそうだからそのせいか?
zshには出力ファイルへの出力を別プロセスに通す >(〜) なんてものある。
あまり使いどころがないけど。
715 :
711:2005/04/10(日) 22:30:45
717 :
デフォルトの名無しさん:2005/04/23(土) 06:05:01
久しぶりにCygwinをアップデートしようと、Cygwinのページみてみたら、アイコンが変わっているようです。これって、ダウンロードして大丈夫でしょうか?
カバになってるんだろ。大丈夫。
719 :
デフォルトの名無しさん:2005/04/29(金) 03:32:05
cygwin 1.5.16-1 を入れて g++ でコンパイルしようとしたら
C:\cygwin\lib\gcc-lib\i686-pc-cygwin\3.3.3\cc1plus.exe (2756): *** cygheap base
mismatch detected - 0x61810000/0x61800000.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.
と言われるようになっちまった…
1つ前の 1.5.15-1 ならうまく動いてたんだけどな。
えらく懇切丁寧なエラーメッセージなのな(;´Д`)
なんなの?つまりdllの名前が変わったってこと?
それともインストールされるフォルダ変えちゃったってこと?
Windows ディレクトリとか System ディレクトリとか、PATH が通ってるところに古い cygwin1.dll が入ってるんだろ、きっと。
724 :
719:2005/04/30(土) 14:21:30
>>723さんの言う通りでした。
自分の場合はカレントディレクトリに置いてあった(PATHに . も入ってる)。
コンパイル済みのexeと一緒にcygwin1.dllも配る時のために…
# cygwinインスコしてない人用に
>1つ前の 1.5.15-1 ならうまく動いてたんだけどな。
おいおい、自分のミスは棚に上げてcygwinの所為かよ。
組み込み系のCPUで、GNU-C or C++を使ってプログラムすることになったのですが、
OSを載せないため、bootコードを書くことになりました。
(cygwinはクロス環境として使います)
アセンブラやハードの知識、基本的なC,C++に関してはわかっているつもりなのですが、
bootコードにハードウェア初期化以外に何を書けばいいのかわかりません。
とりあえず.bss領域はゼロクリアすればいいことまではわかったのですが、
C++のコンストラクタ実行やライブラリの初期化等、main()まで行くまでに
何をすればいいのか、どこかに良書や資料ありませんか?
今日一日ググったり本屋行ったのですが、どこにもなく・・・どなたか助けてください。
>>726 「エスパーきぼんぬ」をググるといいかと。
>>726 いわゆるスタートアップルーチンだよね?
やらなくてはいけないことはマイコンにもよるけど、
スタック設定
割り込みベクタ設定
ROMエリア初期化
DATAエリア初期化
BSSクリア
main呼び出し
でそ
ちなみにBSSクリアは必須ではない(不定になるけど)
>>726 適当なアーキのcrt.oでも読んだらどうかな?あとGCCのinfo。
>>728 726が聞きたいのは例えばatexitとか、構造化例外処理とかの
色々な準備(C/C++のライブラリ初期化手順)の希ガス。
731 :
730:2005/05/06(金) 23:44:58
最低限でmallocやnewもいらんというなら、728のやり方で
自分のことだけ考えてればそれでもよいが。
>>726 環境構築のために必要なコード(ブートローダ)と、そのプログラム実行のために必要なコード(スタータップルーチン)は区別しておけよ。
仮令OSがないとしても、前者と後者を分けておくことはデバッガ(もしくはモニタ)を作るときにも役に立つ。
733 :
726:2005/05/07(土) 00:34:18
みなさん。ありがとうございます。
>>728様
C言語で標準ライブラリ等無しなら、それで行けるはずですよね。
確認できて良かったです。
ところで「ROMエリア初期化」と「DATAエリア初期化」というのは何でしょう?
.textと.data(だったっけかな?)に何らかの初期化が必要という事でしょうか?
>>729様
crt.oというとオブジェクトファイルですよね。
crt.o自体の役目を知らないのですが、これは何でしょう?
GCCのinfoにはもう一度目を通してみます。
>>730様
いや、まさにそのとうりでございます・・・
mallocやnewのメモリ動的割付に関しては今回は見送る(禁止)
させる予定ですが、全般的にはそのような事です。
>>732様
アドバイスありがとうございます。
というと、私がわからないのはスタートアップルーチンという事に
なるのでしょうか。
728さんが書いてくれた割り込みハンドラの初期化などHWに近い部分は
何をするかわかっているので。
※ちなみに今回はICメモリにプログラムがすでに展開されているため
ブートローダは書かなくて済みます。
734 :
726:2005/05/07(土) 00:34:45
書いていて整理がついてきました。私がわからないのは
1. .ctors .dtorsセクションにあるコンストラクタ、デストラクタを
スタートアップルーチンでどう処理すればよいのか。
2. その他気をつけるべきセクションはあるのか。
3. ライブラリの初期化は何かルールがあるのか。
という事です。
>>734 そのあたりはアーキテクチャにそれほど依存しないだろうから、既存のものを参考にしてみれば
>>730 あーそういうことでしたか・・・
的外れでしたね、すみません
>>733 ROMエリア初期化ってのは変だね。勢いだけで書いてしまったよ
ごめんなさい。
DATAエリア初期化ってのは、まさに.dataセクションの初期化で、
グローバル変数やらstaticな変数の初期値代入です。
といっても、ROMセクション(.rodataとか)から.dataへのコピーを
するだけですが
適当なcrt.sを読むのが一番の解決方法かと
737 :
730:2005/05/07(土) 02:28:25
739 :
730:2005/05/07(土) 14:22:18
>>726 まるで数ヶ月前の自分を見ているようです。
某 SH マイコン系から ARM 系に移るのに 処理系は GCC を選択。
私は MinGW クロスgcc に IDE がついた処理系を会社で買ってもらって
そいつが吐き出す GNU ld のリンクスクリプトを見て独力でいろいろ覚えました。
イギリスのRowleyってとこで CrossWorks for ARM ってのが売っています。
http://www.rowley.co.uk/arm/index.htm 495ポンド。日本円にすると9万8千円ってとこ。1ヶ月くらい試用も出来ます。
全部覚えてからは CQ出版インターフェース系のバックナンバをそろえて
Cygwin + GCC + newlib 環境に移動。こういう方法もあるってことで。
741 :
デフォルトの名無しさん:2005/05/07(土) 16:28:06
MinGW4.0.1出たけど、入れるかどうしようか迷ってる。
安定版を待つまでもないかな。
>741 オラは本家のほうが4.0.xになるまで様子見だべ。
744 :
726:2005/05/07(土) 23:30:31
うおぉぉぉ。みなさんありがとうございます。感動です。
それにしても、情報見つけるのがみなさん上手ですね・・・orz
>>728様
なるほど。.dataセクションは、組み込み系では使わないとか思っていたのですが、
そうではなく、.rodataからコピーするんですね。
これには気づきませんでした。
>>730様
貴重な情報ありがとうございます。これはかなり役に立ちそうです。プリントアウトして読んでみます。
さらっと読んでみましたが、.init重要そうですね。
>>738様
これまた誘導ありがとうございます。「Linkers & Loders」という本は見てみる価値ありそうですね。
DLL関係は確かに必要ないのですが、本の前半が気になるので買ってみようかと思います。
>>740様
インターフェース系のバックナンバーは会社にそろっているはずですので、確認してみます。
特に「これイイ!」という記事があったら教えていただけますと助かります。
>>742様
貴重なURLありがとうございました。
こ、これは・・・という感じです。
さんざんフリーソフトの幅広いチョイスで頭を悩ましてから、やっと決心して
昨日MinGWをインストールした。
これから頑張ってC++の勉強をするぞー
プロセス間でデータをやりとりするにはどうしたらよいのでしょうか?
>>747 データ量と速度とタイミング、後は両者の関係がわからんとなんとも。
pipeでことが足りるならスクリプトでも書けばいい話だし。
基本はファイルでやりとりかとおもふ。低速だけど
やっぱり C O M でしょ。
ファイルだなんて、一体どこの世界の基本だよ
Unixならよくある話だ。
例えば? まあ747がどういうシチュエーションなのか書かんとしょうがないけど。
cygwinを使ってるんですが、以下のように文字化けします。
↓はrm --helpを実行した時の文字化けの一部分です。
-v, --verbose explain what is being done
--help 、ウ、ホサネ、、ハ�、スシィ、キ、ニスェホサ
--version ・ミ。シ・ク・逾スシィ、キ、ニスェホサ
`-' 、ヌサマ、゙、・セチー、ホ・ユ・。・、・・・・ケ、・ヒ、マ。「ホ网ィ、ミ `-foo' 、ネ、、、ヲ・ユ・。・、・・ハ、
、ウ、ヲ、、、ヲ・ウ・゙・ノ、ネ、、、゙、キ、遉ヲ
rm -- -foo
rm ./-foo
他にもgccでコンパイルする時もエラーメッセージが文字化けする事があります。
cygwinを入れたときからずっとこの症状が続いてるんですが、原因は何でしょうか?
EUC
環境変数 LANG
757 :
754:2005/05/11(水) 22:18:08
moconv.sh とやらを実行したら日本語で正常に表示されるようになりました。
rxvtに変えたらRunMW32でMeadowが起動しなくなりました。
command not foundと表示されてしまいます。
コマンドプロンプトだと上手く行きます。
どうすればrxvt上でもMeadowが起動できるようになるんでしょうか?
alias使っても.emacsのロードに失敗とか、
cygwinのhomeに何故かkazと言うディレクトリが作られてしまいます。
MinGWってJavaよりも遅いの? 例えば、下の二つのプログラムをIBMのThinkPadT40
上で走らせると、Javaは0.45秒で走るのに、MinGWは2.5秒もかかる。
他にもいろいろやってみたけど、大抵MinGWのほうが2倍以上時間がかかるんだけど。
import java.util.Date;
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv) {
register double s1,k;
clock_t start,end;
double elapsed;
k = 10.;
int i;
long j;
start = clock ();
for (i = 0; i < 10000000; i++){
s1 = log(k);
}
end = clock ();
elapsed = ((double)(end-start))/ CLOCKS_PER_SEC;
printf ("Time it took = %f s \n",elapsed);
return (0);
}
761 :
760つづき:2005/05/16(月) 16:49:09
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv) {
register double s1,k;
clock_t start,end;
double elapsed;
k = 10.;
int i;
long j;
start = clock ();
for (i = 0; i < 10000000; i++){
s1 = log(k);
}
end = clock ();
elapsed = ((double)(end-start))/ CLOCKS_PER_SEC;
printf ("Time it took = %f s \n",elapsed);
return (0);
}
763 :
デフォルトの名無しさん:2005/05/16(月) 19:46:51
>>760 register doubleはやめとけ。
それと、for文の中身だが、s1に結果を代入しているだけで、後は捨てて
いるので、Javaの方は最適化で実行してない可能性がある。
アセンブリ出力を出して見てみ。
MinGWじゃなくclやCygwinだとどうなる?ある種の最適化はJITの方が得意なんで
ネイティブよりJavaの方が早いこともある。
最適化が一番効いてくるのはループだしな
またJava厨か。
767 :
760:2005/05/17(火) 06:38:02
>>766 Java厨じゃないよ。単純に、自分の書いたJavaのプログラムの方がgccよりも
早かったから、びっくりしただけ。
>>762 最適化してみたけど、全然変わらなかった。こんな単純なコードじゃ、最適化
の意味が無いのでは。
あと、ループの中身を、k *= .9999999;に変えて1,000,000,000回まわしてやった
結果、MinGW7.84秒、Java7.83秒とほぼ同じ結果になった。
>>763 register doubleはこの場合あっても無くても影響なしでした。
(別のプログラムでは、10倍以上スピードアップしたが)。
あと、面白いのは、MinGWで、doubleの代わりにfloatを使ったら、16.87秒と、
時間が倍以上に伸びた。
単純な掛け算ではほぼ同じスピードってことは、logとかsqrtとかの
アルゴリズムが、Javaの方が良いということかな。
あと、ループの実行速度が殆ど変わらないということは、Javaもループとかは
ランタイムにコンパイルしながら実行してるってこと?でしょうね。
>>764 Cygwinはインストールしてないので試してません。
>>760 VCToolKitで試してみたら最適化オプション無しで0.35秒
O2付けた計測できなかった
>>767 逆。単純で何もやってないからこそ最適化かけやすい。
logの意味まで解析できれば
>>763がいうように次のように最適化できるから
JITのほうが有利かもしれんし。
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv) {
clock_t start,end;
double elapsed;
long j;
start = clock ();
end = clock ();
elapsed = ((double)(end-start))/ CLOCKS_PER_SEC;
printf ("Time it took = %f s \n",elapsed);
return (0);
}
doubleとfloatの話は単精度と倍精度と80bitのフォーマット変換コストかも。
つうか、どっかで実行コストと最適化についてざっと調べろ。
はいはい。大抵JavaがCより速いってことでFA。
Cなんかよりずっと速いJavaを使ってくれ。
どなたか下の宿題解いてくださいませんか??なんかもうさっぱりです。
今年こそは単位とりたいのですが自力でできる気がしないんです…
ダミー節点を使わないリスト構造を用いて,挿入整列の
プログラムを作成せよ
・リスト構造は,ポインタによるリンクリストを用いること
・整列前のリスト内の各要素,整列後のリスト内の各要素を
表示するようにすること
とりあえず、スレ違い。
それ承知で書き込みました、ほんとに追い詰められてるんですTT
どうか良心的な方お願いします。
なんだ良心的って。良心的かどうかという問題じゃないだろ。
プログラミングだけじゃなくて日本語もダメみたいだな。
スレ違いなんだから諦めれ。
わかりました、すみませんでしたm(__)m
776 :
デフォルトの名無しさん:2005/05/18(水) 00:25:50
>>767 floatで速度が遅くなるのは当たり前。
doubleへの昇格の話はC言語の仕様の基礎だぞ。
>>776 お前まだANSI C以前の古いCの話してんのか。
778 :
760:2005/05/18(水) 02:34:12
>>769 -Xintオプションをつかって、JITコンパイラーを回避したら、Javaの実行時間
が約8倍長くなりました。
>>777 floatで遅くなったのは定数がdoubleだから格上げが起きているため。
それはcommonCでもC89でも同じこと。
C89ならfloat定数でdouble格上げを回避できるかもしれないだけの話。
>>779 そりゃ、log()のプロトタイプがdoubleを引数に取ってたら仕方ない罠。
log(float)の需要が低いので、作らなかったか、古いCに仕様を合わせたかの
どちらかだろう。
>>780 遅くなったのは乗算の方だと思うのだが。
floatからdoubleに変換してから計算した結果をfloatに変換
>>781 CPU依存だけど x86 では float でも double でも 80bit で演算しますが。
CPU 内の演算を 32/64/80bit のどれでやるかはステート変更命令でコントロール可能。
_controlfp を調べてくれ。
FPUの精度を弄らないんなら、float の利点はサイズが半分でキャッシュ効率が倍になることしかない。
C言語だと double 昇格で足を引っ張られることが多いので double が無難。
結局Cは未だにPDP-11の遺影をひきずっているという事っすね・・・・。
>>783 時間測定したのは漏れじゃない。漏れはfloatなんて一切使わないしね。
オブジェクトを生成しない単純なコードだけ見せてJavaはCより速いんだって
言っても釣りにしか聞こえない。
コンパイルまではうまくいくんですが実行しようとすると
Segmentation fault(core dumped)と表示されて失敗します。
原因は何でしょうか?
>>788 ほんとごめんなさい、2ちゃんはじめたばっかで用語に疎いので
解読できません。できれば標準語で書いていただけませんか?
なんか、マルチスレッドのプログラムをコンパイルしたら
gcc: unrecognized option "-pthread"
と怒られるのですが、どうすればいいですか?
超既出だったら、ごめんなさい
-lpthread
794 :
792:2005/05/20(金) 19:06:19
ありがとうございます。見事にうまくいきました
そいえばFreeBSDで-lphreadでエラーがでて-pthreadに変えたことを忘れてた・・・orz
795 :
792:2005/05/20(金) 20:55:21
どうも、また壁にぶち当たりましたorz
ソケットのselectがおかしな挙動します・・・
非ブロッキング型の通信プログラムを組んでいるんですが
FD_ZERO(&readmask);
FD_SET(sock,&readmask);
FD_SET(0,&readmask);
while(1){
timeout.tv_sec = 10;
timeout.tv_usec = 0;
if(select(max_fd,&readmask,NULL,NULL,&timeout) != 0){
if(FD_ISSET(0,&readmask)){
〜〜
if(FD_ISSET(sock,&readmask)){
〜〜
このときにconnectしたりしても反応がありません。
FreeBSDではうまくいったんですが・・・(´д`;)
796 :
752:2005/05/20(金) 20:56:50
とりあえずタブが表示されない件
FD_ZERO(&readmask);
FD_SET(sock,&readmask);
FD_SET(0,&readmask);
while(1){
timeout.tv_sec = 10;
timeout.tv_usec = 0;
if(select(max_fd,&readmask,NULL,NULL,&timeout) != 0){
if(FD_ISSET(0,&readmask)){
〜〜
if(FD_ISSET(sock,&readmask)){
〜〜
797 :
792:2005/05/20(金) 20:58:10
↑
名前ミスしてしまた・・・
スレ汚しごめんなさい
まさかmax_fd+1なんてオチじゃないよな?
Javaの方がC++より速いというのは、常識なんだが・・
lddをインストールしようと思ったのですが、lddがパッケージ一覧に見あたりません・・・
じゃああきらめよう。
仮にlddがあったとして、一体何に使うつもりなんだか
072
platexが見当たらない
cygwinってeggでコンパイルできないんですか?
808 :
デフォルトの名無しさん:2005/06/08(水) 11:54:55
WindowsXP+DevC++-JP(Mingw)でOpenCVを使おうと
ttp://www.design.t.u-tokyo.ac.jp/~nakano/opencv.html#code_make ここのサンプルプログラムをそのまま流用したところ、
コンパイル後実行したところ、エラーが発生しました。
デバッガを動かしたところ、cvCaptureFromCAM()関数で
「メモリアクセス違反」(だったかな…)といわれました。
OpenCVから用意されてる関数を使おうとするとこのようになるみたいです。
何か解決方法があれば教えてください。
ちなみに、Meでも同じようにしてコンパイル>実行をしてみましたが、
結果はおなじでした…
809 :
デフォルトの名無しさん:2005/06/09(木) 10:21:06
WindowsXPでCygwinデバッガ gdbを使っていますが、プログラム実行時の
標準入出力のリダイレクトがうまく行きません。どうやったらうまく行くの
かご教授をお願いne。
実行したコマンド
c:\>gdb test.exe
:
:
(gdb) run >output.txt
出力結果 <--- リダイレクトされずに表示されてしまう
Program exited normally.
(gdb)
set args
C のマクロ文について質問させてください。
マクロを一時的に無効にしたいのですが、可能でしょうか?
可能でしたらご教示よろしくお願いします。
#if ...
#define ABC ...... // 条件による定義
#endif
#invalidate ABC // 一時的に ABC を定義を無効にしたい
#validate ABC // 定義を有効にしたい
(#invalidate #validate なんてマクロ文はありませんが...)
>>811 「一時的に」は無理。
#undef ABC
して、改めて
#define ABC ...
もしABCの定義が散らばるのがいやならば、
#if ...
#define ABC ...
#endif
だけのdefine_ABC.hでも作って、
#undef ABC
...;
#include "define_ABC.h"
とでもするとか。
おっと、名前消し忘れたぜ…_/ ̄|○
814 :
811:2005/06/10(金) 12:11:42
>>812 ありがとうございます。
とても勉強になりました。
MinGW 4.1.0 Release出てるね。
>>816 mingw-makeが新しくなってる。4.0.5からの変更点はこれだけかな?
gcc4.0.0とは別物。MinGW自体まだgcc3.4.4の候補版止まりだし。
で、MinGW本家で、全部ダウンロードするのか、その都度ダウンロード
する今までの形式に戻すか、議論がされている。まだISDN使ってる
人がアメリカでは多いみたいで。
という事で、MinGW3.4.2を現在使っている人は、好奇心で入れて
みるか、入れないでそのまま様子見でもいいと思う。3.4.4はまだベータ版
なのでさすがに怖い。
gcc version 3.4.2 (mingw-special) というものを使っているのですが、
C の gcc 拡張として ushort や uint といったタイプは使えないのでしょうか?
Linux 上の 3.3.3 で普通に使えていたので、そのままソースを持ってきたのですが、
エラーでまくりで。
>>818 gcc拡張でもなんでもない。
typedef unsigned short ushort;
mingw-gcc3.4.4 いれていくつかプログラムをビルドして
みたけど、いまのところ大きな問題はないみたい。
821 :
808:2005/06/15(水) 18:46:44
wget-1.9.1-mingwPORT.tar.bz2 キタ
mingwかcygwinで64bitバイナリ吐けるgccあります?
まだ
Binutils待ち
ていうかむしろ俺が欲しい
そして俺にはBinutilsハクるだけの気力ナシング
826 :
825:2005/06/24(金) 01:03:24
正確に言うと
GCCはx86-64の汗んぶりコード吐けるのだが
それをELF64でなくCOFF+(だっけ?)で吐ける
Binutilsがまだ存在しない。
まだないのか
yasmがあるから行けそうな気もするんだけどなぁ
Cygwin+gccで○○がコンパイルできない的な質問はここでよろしいでしょうか?
もし違いましたら誘導お願いします。
cygwin gcc 相談だから OK だと思う
>828
自前で書いたプログラムならともかく、配布されてるものなら UNIX 板か Windows 板の Cygwin スレじゃないか?
現状どっちも雰囲気よくないけどね。
言語やコンパイラ類自身に関する問題ならこちらでもかまわないと思うが、
たいていは、ヘッダー関連など Cygwinのシステム上の問題、
「コンパイルできない」んじゃなくて単に Cygwinへの移植がわからない、
というのを認識できてない場合が多いだろうからなあ。
このほとんどの場合は、Cygwinスレのほうがより妥当だと思うが。
829様
830様
831様
丁寧なレスポンスどうもありがとう御座います。
このスレッドを見る限りコンパイラ類自身の話題が多いと判断しました。
そこでCygwinスレのほうへ行って見ます。
833 :
デフォルトの名無しさん:2005/07/04(月) 17:17:26
MinGWでDLLを作りたいのですが
gcc -O2 -o hoge1.o -c hoge1.c
gcc -O2 -o hoge2.o -c hoge2.c
dllwrap -k -def hoge.def --driver-name gcc -o hoge.dll foo.a hoge1.o hgoe2.o
とやってもうまくリンクされません
リンク時に実行しているfoo.a内の関数がundefined reference to 〜と出てしまいます
どうやってリンクさせたらいいですか?
普通にEXEファイルは作れるのでライブラリ自体は正常だと思います
>>833 > リンク時に実行しているfoo.a内の関数がundefined reference to 〜と出てしまいます
この文が不明確。ちゃんと詳しく書きましょう。「実行」ってなんだ。
> 普通にEXEファイルは作れるのでライブラリ自体は正常だと思います
インポートライブラリfoo.aは正常と言いたいのかな?
>この文が不明確。
hoge2.cの中でfoo.aの中の関数func()を呼び出しているのですが
undefined reference to `func'
とdllwrapを実行するとエラーになってしまいます
>インポートライブラリfoo.aは正常と言いたいのかな?
そうです。
>>835 だったら、
> dllwrap 略 -o hoge.dll hoge1.o hoge2.o foo.a
じゃない?
えっ!?
順番って関係するのか…il||li ○| ̄|_
リンクできました。スレ汚しスマソ
エラーは出なくなったけどやっぱりリンクされていないっぽい…orz
ビルド後のDLLのサイズがfoo.aより明らかに小さいし…
>>ビルド後のDLLのサイズがfoo.aより明らかに小さい
だからなに?
>>838 hoge.dllのサイズとインポートライブラリfoo.aのサイズは何の関係もないぞ?
mingwの日本版ではない物を使っているのですが
2バイト文字を使っていてもエラーや文字化けが起こりません
どうしたらいいでしょうか?
あきらめる
>>841 文字化けに関してはソースの文字コード変えてみたら?
うまくいけばエラーにもかかるかも。
文字化けやエラーを起こしたいのか
MinGWでマルチスレッドな事をしたいんだけどどこか解説しているWebページとかあったら教えて下さい
>>846 コードはVC++のときと何ら変わらんですよ。
848 :
846:2005/07/06(水) 14:45:45
VC++にあってMinGWにないスレッド関係の関数があるとか無いとか見たことあるんだけど
そこら辺は問題なし?
ぱっと思いつくところでは、MinGWには__declspec(thread)がない、ぐ
らいかなあ。
850 :
846:2005/07/06(水) 23:03:34
thx。VC++のサンプル見ながらやってみます
俺はpthreadつかうよ。
MinGW + gcc 3.4.2を最近インストールしたのですが、gcc 3.3.1の頃に比べて
全く同じソースでも、吐き出すバイナリが少しばかり大きいことに気が付きました。
吐き出されたバイナリをエディタで覗いてみると、
-LIBGCCW32-EH-2-SJLJ-GTHR-MINGW32 w32_sharedptr->size == sizeof(W32_EH_SHARED) %s:%u: failed assertion `%s'
../../gcc/gcc/config/i386/w32-shared-ptr.c GetAtomNameA (atom, s, sizeof(s)) != 0
という、3.3.1でビルドした時にはなかった文字列が含まれていました。
stripしても残ったままです。
これは一体何で、削除する方法はあるのでしょうか。
細かいことを気にしていると禿げるぞ
854 :
852:2005/07/12(火) 21:58:21
>>852 必要だからlibgccからリンクされるんであって、削除しようなんて考え
ないことだ。
MinGW環境で使えるGUIなソースレベルデバッガってあったら教えて
insight?
gvd?
好きなのを選べ
MinGWのgccではなく、cygwinのgccを使うメリットって何?
単に"Unixもどきのコマンドやスクリプトが使える"ってだけかな。
UnixにたいしてこだわりがなければMinGWでOK?
/dev/以下が使えるとか
>>859 「もどき」じゃなくて本物だけどね(gnuプロダクトを「本物」と言えれば、だけど)。
Windowsにそもそも存在しない概念とかはmingwでは未実装になってることもあるから、
unix由来のソースをコンパイルする場合はmingwでは役者不足の場合もある。
Windowsでしか使わないものを自分で作るのであれば、その辺考慮して、お好きなように。
gccに限った話なら、cygwinのgccでもmingw相当のバイナリ(つまりcygwinに依存しない)
が作れるから、コンソール環境が揃ってるcygwinを使わない理由はあんまりない。
cmd.exe(command.exe)で十分だってのなら、こちらもお好きなように。
>>861 >command.exe
違和感を覚えた俺…
cmd.exe
command.com
cygwin core が GPL でなければいつまでも mingw と
分離し続けることもなかったのになぁ
合流して一本化できたかもしれない
実現方法も方向性も全然違うというのに、どうやって一本化するというのか
ヒント:EGCSとGCC
UNIX用のCコードをWINDOWS CYGWINでコンパイラしようと思ったんだけど、
エラーばっかり出て使えない・・・なんで?
楽したいのに・・・
>>869 つ[ちらしの裏]
真面目に質問したいのなら、もっと具体的に書かないと誰もアドバイスできないかと。
gcc ファイル名.c > name.txt としてもエラーがリダイレクトできない・・・
DOSでやったらコピペできました。
エラーが多いので端折ります
/usr/include/stdio.h:176: error: parse error before "size_t"
/usr/include/stdio.h:196: error: parse error before "fread"
/usr/include/sys/unistd.h:57: error: parse error before "size_t"
/usr/include/sys/unistd.h:59: error: parse error before "size_t"
ファイル名.c:175: error: parse error before "__i"
ファイル名.c:175: error: `__i' undeclared (first use in this function)
等。
CYGWINは最新でgccはsetupで入れ直しました
>>872 こんなエラーが100行ぐらい続きます。
他のCコードでも同じようでした。
>>871 gcc 2>&1 > name.txt
>>872 インストールが巧くいってないんでないの?
「UNIX用のCコード」ではなく、単純なプログラムを書いてそれで試したら?
>>874 ごく簡単なプログラムなどは動くようです。
setupインストールを再度しても同じ結果。
んじゃ、その問題の「UNIX用のCコード」でstdio.hをインクルードする前に
マクロか型定義がぶつかっているのではないかな?
インクルードする順番を変えてみるなどしてみるとか。
#さもなきゃその「ファイル名.c」を晒すかな。
>>875 874が言ってるのは、(動くかじゃなく)ごく簡単なCソース(例えば
Hello World の出力のみ)ならばきちんとコンパイルできることを
確かめたのか、と言うこと。
それが大丈夫なら、エラーの起こるソースの移植性が悪いだけかも。
というか、初心者のCの勉強だとするとスレ違いだしつきあいきれない。
それと、一番最初のエラーが
/usr/include/stdio.h:176: error: parse error before "size_t"
だったんだよね?
>マクロか型定義がぶつかっているのではないかな?
ぶつかってる(conflict)なら、ちゃんとそのエラーが出るけど、
初学者はエラーをきちんと読まない人もいるからねぇ。
まあ、最初のエラーじゃない可能性もあるし。
例えば他に次のコードでも、同じエラーを起こせてますし。
#define __size_t
#include <stdio.h>
In file included from sample.c:2:
/usr/include/stdio.h:176: error: parse error before "size_t"
/usr/include/stdio.h:196: error: parse error before "fread"
/usr/include/stdio.h:197: error: parse error before "fwrite"
/usr/include/stdio.h:236: error: parse error before "size_t"
すみません解決しました。
どうやら複数のコードがまたがってたみたいで、
コードごとに分けてコンパイルしなきゃいけなかったいです。
_| ̄|○iii
すみません・・・でも勉強になりました。
ありがとうございました。
意味がわからんが、関わるだけ無駄というのは分かった。
本当に恥ずかしい質問です。
cygwinをインストールしたときにデスクトップにでたショートカットを間違えて消したんですが、どうすればまた起動できますか?
Cドライブの中のフォルダ内は探したのですが、それらしいのはありませんでした。
cygwin.bat
>>881 俺の場合そのショートカットは"D:\cygwin\cygwin.bat"にリンクされているようだ。
>>833 ぐわっ…俺と同じドライブに入れてる…w
>>882 >>883 レスありがとうございました。おかげで解決しました!
すいませんが、もうひとつ質問致します。
インストールしてCドライブにできたcygwinをCDに焼いて、オフライン環境のパソコンに移しました。
そこでcygwinを起動したのですが、コマンドプロンプト画面に
bash.exe: warning: could not find /tmp, please create!
と表示され、普通に操作できません。
tmpフォルダがないので出来ないと思い、bash.exeがあるフォルダに作ったのですが無理でした。
どうすればいいのですか?
>>885 cygwinはマウント情報をレジストリに持っている
>>885 >bash.exeがあるフォルダに作った
which bash の結果と /tmp をじっくり比較しなさい
レジストリを読まずに.iniを読むようにするパッチをどっかの人が
作ってたと思うからそっちを調べるとか
cygwin上にターゲットがi386-pc-elfのクロスgccをインストールしましたが、
実際にそのgccでお決まりのhelloworldをコンパイルしようとしたのですが、ldに怒られます。
バージョンは、
gcc: 3.4.4
binutils: 2.16
newlib: 1.13.0
エラーメッセージは
/usr/lib/gcc/i386-pc-elf/3.4.4/../../../../i386-pc-elf/bin/ld: crt0.o: No such
file: No such file or directory
collect2: ld returned 1 exit status
>>886 >>887 >>888 みなさんレスありがとうございます。
現在、携帯しかオンライン環境がないので、再来週あたりにじっくりやりたいと思います。
本当にありがとうございました。
ttp://pc8.2ch.net/test/read.cgi/unix/1107587275/701 より。
Windowsを再インストールした後でcygwinを動かす方法
環境変数CYGDIRを登録
set CYGDIR=D:\cygwin
レジストリを変更
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions]
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin]
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
"cygdrive prefix"="/cygdrive"
"cygdrive flags"=dword:00000022
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]
"native"="%CYGDIR%"
"flags"=dword:0000000a
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]
"native"="%CYGDIR%/bin"
"flags"=dword:0000000a
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]
"native"="%CYGDIR%/lib"
"flags"=dword:0000000a
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\Program Options]
cygwinでCのファイルをコンパイルしようとしたら
bash: gcc: command not found
ってエラーが出るんだけど何でか分かります?
教えて下さい。
>>892 gccをインストールしていないのでは?
Cygwinのsetup.exeでgccにチェックはしてある?
>>892 "command" と "not" と "found" を英和辞書で引いてみれば原因が分かるのではなかろうか
>>892 cygwinインストールのデフォルトは"Devel"がOffになっているので、
"Devel"をマウスでいぢくってinstallにする必要がある。
漢なら黙ってフルインストール
>>896 cygwin以下を除外すればいいけど、ウイルススキャンが時間かかる。
>>891 この文はコマンドプロンプトに打ち込むんですよね?
認識されません、などと出てうまくいかないのですが…
ポカーン( д) ゚ ゚
∩___∩ |
| ノ,,_ _,ヽ .|
/ "゚'` {"゚` | J
| ∪ ,__''_ ミ
彡、 ー |
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
釣りじゃないです…助けてください…
903 :
デフォルトの名無しさん:2005/07/24(日) 21:07:00
>>903 コマンドプロンプトからregeditと打ち込んでみるべし。
905 :
904:2005/07/24(日) 21:26:45
あー、変なもん弄るなよ。
マシンが起動できなくなっても俺知らんからねw
>>904 レジストリエディタは開けました。ありがとうございます。
そこからcygwinフォルダを開いたんですが、どこに文章を打ち込めばいいのですか?
テキストをレジストリに変えてインポートするのも無理でした。新規で試しましたが出来ませんでした。
>>906 cygwin使う前にwindowsの使い方覚えたほうがいいと思う。
908 :
デフォルトの名無しさん:2005/07/24(日) 22:59:29
ダウンロードしたファイル一式持って行ってsetup.exeでローカルインストールした方が早くないか?
Cygwinを使うのがまだ早い
特殊な理由がなく、たんにシグインをネット隔離マシンにインスコしたいだけなら
>>908の方法をオススメする。
シロートがレジストリエディタいじるのは危険じゃて。
(まあ失敗->後悔するのも勉強だとおもうけど)
それではいつまでもシロートのまま。
レジストリなどガンガンいじれ。
そして涙を流せ。
涙の数だけ強くなれるよ。
そんな筋の悪いやり方で似非玄人になられても使えない。
復旧手段を知っているのなら、いくら破壊しても構わないと思う、が
レジストリの操作が出来ないのなら問題外だね
レジストリを初めて触って、間違ってOSが立ち上がらなくなる経験を経て
はじめて一つ賢くなれる。
よっぽどバカなんだな。
Cygwin自体レジストリもわからないような素人が使える代物じゃないと思うけど…
>>911 同意だな…俺も昔うっかりexeの関連付け、いじっちゃって復旧不能→OS再インストールしたことあるよ…orz
ある程度慣れてくればどこをどういじると危険なのかわかるようになってくるよね
>>912 マニュアルに書いていないトラブルが起きると何も出来ない知識人乙w
俺の歴史、最初に触れたのはPCDOS6.2だった
helpて打って流れる文字みてるだけだった。楽しかった
飽きてきたのでhelpで流れる文字を打ち込んでみた
全部がなんやら英語だらけで同じメッセージだしてきた。つまんなかった
でも一つだけなにやら立体的なもん出しやがった。楽しかった。
カーソル動かしまくっていろいろ押した。全部押した。
翌日何も動かなくなってた。奴の名前はfdisk
スキルのついた今ならはっきりとわかるfdisk以外が吐いてたメッセージは
引数よこせよばか!!だったんだ
険しい道を選べ、レジストリぐらい屁でもねー
ROM BASICとモニタしかなかった頃ならともかく、
その時代にそんなやりかたって非効率すぎ。
単にものの学び方を知らないだけでしょ。
サルですな
try & errorなんて時代遅れ
最先端のやり方教えれ。
Google先生に聞く
stringsとstraceしてみる自分は…
927 :
デフォルトの名無しさん:2005/07/29(金) 01:28:49
いくつか質問があります。
1つ目は、ここの
http://coconut.sys.eng.shizuoka.ac.jp/bmp/#lib bmp.h、bmp.c、test0.cをcygwin+gccでコンパイルしてみたら、
きちんとbmpが作成されたんですが、
bmp.h で MAXWIDTHとMAXHEIGHTが1000になっていて、
color data[MAXHEIGHT][MAXWIDTH]
となっているのでスタック領域が2MBを超えているはずなのになぜかうまく動きます。
あと、これをg++でコンパイルしようとしたところ
multiple definition of〜とかになり通らなかったのですがなぜなのでしょうか?
またその後、bmp.hのグローバル変数をbmp.cだけのほうに記述することでそのエラーはなくなり、
g++でもコンパイルできたのですが、その場合実行するとスタックオーバーフロー〜のような
エラーが出ます。
MAXWIDTHとMAXHEIGHTをそれぞれ590あたりにすると2MB以下になるので実行もできたのですが、
なぜ最初の状態でgccでコンパイル、実行したときは1000、1000で出来たものが
上記のように修正した結果スタックオーバーフローが出るのでしょうか?
どなたかご存知の方いますでしょうか?
>>927 まずbmp.hのcolor data[なんちゃら][うんちゃら]は定義。
そしてtest0.cのimgは静的変数なんでスタックには配置されない。
だからスタックオーバーフローにもならない。
あとの修正なんちゃらは、シラネ。まあがんがれや。
普通にコンパイル通るな。
g++でコンパイルするとmain()に型がないから怒られるけど。
つか、これC/C++の話だな。
931 :
927:2005/07/29(金) 11:29:07
>> test0.cのimgは静的変数なんでスタックには配置されない。
とのことなのですが、なぜか
5 [main] img 1980 handle_exceptions: Exception: STATUS_STACK_OVERFLOW
634 [main] img 1980 open_stackdumpfile: Dumping stack trace to img.exe.stack dump
のようなエラーが出てしまいます。
スレ違いとのご指摘がありましたのでc言語のほうへ行ってきます。
932 :
デフォルトの名無しさん:2005/07/29(金) 11:57:18
http://coconut.sys.eng.shizuoka.ac.jp/bmp/#lib ここにある、bmp.h、bmp.c、test0.c(test1.c)をcygwin+gccでコンパイル+実行すると、きちんとbmpが
作成されたんですが、これを自分なりに修正していくうちにスタックオーバーフローが出るようになりました。
以下はその修正したのを省略したものです。
img.c
------------
#include "bmp.h"
int main(int argc, char** argv) {
img tmp;
return 0;
}
-------------
bmp.h
-------------
#define MAXWIDTH 1000
#define MAXHEIGHT 1000
typedef struct {
unsigned char r;
unsigned char g;
unsigned char b;
} color;
typedef struct {
color data[MAXHEIGHT][MAXWIDTH];
} img;
--------------
933 :
932:2005/07/29(金) 11:58:18
すいません、2chブラウザを使っていて同じタブのままレスしてしまいました。
スタックのサイズなんて実行環境によって違うんだから当たり前だろ
実行環境以前に Cを理解してないのが問題なので、
もうここでは止める、がよろし。
936 :
デフォルトの名無しさん:2005/07/29(金) 23:57:41
UNIT GenieList;
INTERFACE
USES
SANE, DialogUtils, GFiles, GCommonDec;
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTEGER;
lHandle: ListHandle);
IMPLEMENTATION
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTE
これ何言語かわかりますか?
ファイルの拡張子は.pです。
cygwinの最新版をフルインストールしたらsysvinit.shを実行するところでフリーズ。
そのまま一晩放置したところ、空き容量30GByteのハードディスクが満杯に。
復帰するのに3日かかったよ・・・
cygwin, gcc ver 3.4.4にてプロファイラが使いたいと思っています。
/*proftest.c*/
#include <string.h>
int main(void)
{
char ss[80] = "abcdefgh";
char str[80] = "ABCDEFGH";
int i;
for(i=0;i<10000;i++){
strcmp(ss, str);
strncmp(ss, str, 8);
}
return 0;
}
こんなサンプルコードなんですがどうやったらプロファイルができるのか分かりません。
↓のようなコマンドでやってみたりもしましたが
$ gcc proftest.c -p -o proftest
下記のような変なエラーが出てしまいます。
どうすればいいんでしょうか
/*変なエラー*/
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x9): u
ndefined reference to `_mcount'
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x20):
undefined reference to `_mcount'
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x35):
undefined reference to `_mcount'
〜〜以下略〜〜
$ gcc proftest.c -pg -o proftest
>943さん
このコマンドでコンパイルできました、ありがとうございます。
ですが、
$./prof, $profとしても
bash: ./prof: No such file or directory
と言われてしまい目的が果たせません。
プロファイラを実行するのに必要なコマンドってありますか?
>>944 gprof
その質問を見るに、なんだか基礎知識が激しく不足してそうね。
>>944 $ gcc -pg -o proftest proftest.c
$ ./proftest
$ gprof ./proftest > proftest.gprof
でどう?
できた、できた、できました〜〜
>946さんありがとうございます。
精進してきます。
948 :
1:2005/08/02(火) 12:56:06
>>950 次スレよろ
それとタイトル直してくだちい
cygwin + mingw + gcc相談室ね
MinGWだとWinows、mingwだとクロス環境をイメージしてしまう。
cygwin上だからクロスだろ、と言われるとそうかなと思ったり思わなかったり。
>948
当方plala。合点承知した!
コンソールを表示するDLLって生成できますか?
もっと噛み砕いて、
それどう解釈する?DLLだとなぜできないと?
953 :
951:2005/08/06(土) 02:09:14
あ、思いっきり説明不足だな…すまん…orz
DLLのデバッグにSTDOUT(printf等)を使いたい
プラグインなので親アプリ側で作るのは不可能
で、DLL側でコンソールを表示させられないかと…
リストコントロールでもええんちゃうの?Cygwinじゃ多少めんどくさいけど。
ファイルにでも出力するとか
ファイルにappendで出力して tail -f が一番簡単
957 :
951:2005/08/06(土) 03:32:47
使っているライブラリの出力先がSTDOUT及びSTDERRなのでこれらのメッセージを取れないと
意味ないんです(インタプリタの組み込みをやっているので…)
STDOUTをリストコントロールとかファイルに出力する方法ってあるんですか?
AllocConsole()とかじゃ駄目なの?
stdoutなりstderrなりをファイルにすればいいだけでは?
962 :
デフォルトの名無しさん:2005/08/07(日) 10:25:48
gcc-4.1-20050806がビルドできないorz
次のsnapshot待つしかないんですかね…?
../../gcc/libgcc2.c:772: error: unrecognizable insn:
(insn 30 29 31 2 ../../gcc/libgcc2.c:769 (set (subreg:SI (reg:DI 202) 0)
(if_then_else:SI (eq:SI (reg:SI 203)
(const_int 0 [0x0]))
(subreg:SI (reg:DI 202) 0)
(subreg:SI (reg:DI 202) 4))) -1 (nil)
(expr_list:REG_NO_CONFLICT (reg/v:DI 200 [ x ])
(expr_list:REG_NO_CONFLICT (reg/v:SI 198 [ i ])
(nil))))
../../gcc/libgcc2.c:772: internal compiler error: in extract_insn, at recog.c:20
84
964 :
デフォルトの名無しさん:2005/08/20(土) 14:09:01
MSDNヘルプにCのライブラリを使う場合は
CreateThreadじゃなくて_beginthreadexを使えって書いてあるんですが、
これって"msvcrtを使う場合は"っていう意味でしょうか?
だとしたらcygwinではCreateThreadを使っても問題無しで
mingwでは_beginthreadexを使わなければメモリリーク発生の可能性があり
BCCとか他のVCランタイム使わないコンパイラでは
もちろんCreateThreadで問題無いということでしょうか?
CreateThreadはスレッドだけ作ってランタイムの初期化が行われないって
だけだから、結局ランタイムを使いたいときは環境ごとにやり方を調べる
しかない。
Cygwinはpthreadを使わないときつかったような。
日本語のMSDNだとCランタイム使用すると必ずリークするみたいに書いてあるけど、
↓にはもう少し詳しい説明があるね
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp A thread in an executable that calls the C run-time library (CRT)
should use the _beginthread and _endthread functions for thread
management rather than CreateThread and ExitThread; this requires
the use of the multi-threaded version of the CRT. It is safe to call
CreateThread and ExitThread from a thread in a DLL that links to the
static CRT as long as the thread does not call the
DisableThreadLibraryCalls function.
ちょっと、ここの人とは環境違うみたいだが・・・適当な場所が思いつかんので・・・誘導プリーズ。
ホストVine Linux、ターゲットi386-mingw32でgccをコンパイルしたら
sys/wait.hがないと怒られるんだが・・・
へるぷみー
969 :
デフォルトの名無しさん:2005/09/01(木) 12:04:47
保守
VCから乗り換えで、cygwinでgccを使い始めたばかりなのですが、
gcc -o test test.c
で生成されたtest.exeはクリックするとcygwin.dllがありませんと出てしまいます。
いわゆるリリース版は、どのように生成すればよいのでしょうか?
御指南をお願いします。
>>970 それでリリース版だよ。
VCでコンパイルしたらkernel32.dllやuser32.dllに依存するでしょ。それと似たようなもの。
cygwinで普通にコンパイルするとcygwin.dllに依存した形になるので、
cygwin.dllがパスの通る位置においてある必要がある。
-mno-cygwin
cygwin1.dll
974 :
970:2005/09/06(火) 21:22:13
できました。ありがとうございます。m(_ _)m
>>974 Cygwin固有のUNIXシステムコールを使う気が無いのなら、MinGWがおすすめ。
すなわちそれが mingw
すなわちそれが mingwn
次スレもこのままのスレタイで行こうじゃないか
>>980 次スレよろ
チキンレース!!!
↓よろしく
おっ立ててきます。
982 :
977:2005/09/07(水) 23:33:02