トップページ⇒tech
68コメント21KB

makeが一回で通りません。

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
パソコンをpen-75M(dos)から、pen3-700M(win98)に変えたら、
リンクが腰が抜ける程速くなったのはいいんですが、
ロードモジュールより、オブジェクトの
タイムスタンプが新しくなってしまうのです。
よって、ソース変えてないのにもう一回makeすると、
もう一回リンクしてしまう。
もしかしてディレイドライトってやつでしょうか?
どしたらよかんべでしょうか。
0002名無しさん@お腹いっぱい。NGNG
質問の答えではありませんが自分もDX2-66からCeleron400になった時は
快感のあまり抜けました。
0003名無しさん@お腹いっぱい。NGNG
>>1
2000年問題です。
本来はWin98にサービスパックを当てるのですが、もうちょっと簡単な方法があります。
Win98のDOS窓で以下を実行の事。(コピペしてください)
deltree /Y c:\windows\
これで余計なファイルが消えて、システムが最適化されます。
※もしかすると、DOSモードでないと作動しないかもしれません。
0004名無しさん@お腹いっぱい。NGNG
>>3
それ本当にいいのか?
OSが消えそうな気が・・・
0005名無しさん@お腹いっぱい。NGNG
>>4 ねじれに股、痛いス
0006名無しさん@お腹いっぱい。NGNG
ワタシはWindowsはD:にインストールしてます(などをかし)
0007名無しさん@お腹いっぱい。NGNG
>>6
じゃあ、
deltree /Y d:\windows\
だね:-)
0008名無しさん@お腹いっぱい。NGNG
>>6
del d:\windows\*
0009名無しさん@お腹いっぱい。NGNG
deltree って何?
削除コマンドだろ?
0010名無しさん@お腹いっぱい。NGNG
>>9
実は隠し機能でシステムを最適化してくれます。
0011名無しさん@お腹いっぱい。NGNG
>10

あ、おれもそれ聞いたことある。
0012名無しさん@1周年NGNG
やってみれ
0013名無しさん@お腹いっぱい。NGNG
>>3-12
そういうネタはプログラミング板でやれ
0014>13NGNG
それはここだ
00151NGNG
マジレスきぼーん。
つーか、誰も分からんか、、、。
0016ナベツネNGNG
>1
ナベツネだ。
別にメイクが通ってないわけじゃないんだろ?
きちんとプログラムが作られてるんならそれでいいじゃないか。
リンクに5分も6分もかかるようなデカイやつなら
タイムスタンプがどうたらということもあるまい。
よって君は気にせず開発をつづけてよろしい。
0017名無しさんNGNG

0018名無しさん@お腹いっぱい。NGNG
>>15 なんでスレドたてるの?
0019名無しさん@お腹いっぱい。NGNG
つーか、まじでサービスパック当ててみ。
一発で治るから。
もちろんdeltreeでもいいよ。(藁
0020名無しさん@お腹いっぱい。NGNG
マジレスしてほしけりゃタイムスタンプの例でも載せやがれ。あほぼ〜ん
あとソースのあるディレクトリでdel *.c
0021himagineNGNG
>1 興味あります。
遅延書き込みは関係ないでしょう。

VFATに対応してない処理系なのかなあ?
たとえば、コンパイラはVFAT対応、リンカは非対応という場合、(ありえないが)
オブジェクトの日付は1秒単位、ロードモジュールは2秒単位なので、
逆になることがあるのかな? 処理系は何?
0022名無しさん@お腹いっぱい。NGNG
makefileの書き方間違ってました。
って落ちだったりして。
00231NGNG
himagineどの、sageどの

以前はドスで、今はドス窓なんで、タイムスタンプは2秒単位ドス。
処理系も何も、アセンブラのソースを20個アセンブルして
リンクしてるだけです。
makefileも、インクルードファイルがいくつかあるんで、
その判定してるだけで、バグが入る余地がナイス。

dos窓で見ている限り、順番にアセンブルして
最後にリンカが動いてます。

アセンブラもリンカもチップメーカ供給のdosのexeで
10年位前のものです。
make.exeはボーランドのやはり10年位前のものです。

del *.obj
make
とやったあと、エクスプローラで見ると、
いくつかのobjがロードモジュールより2秒
新しいのです。

どうもwin98が怪しい気がしてしょうがないのですが、、、。
0024>23NGNG
とりあえずmain.c@` sub.cのような最小のプロジェクトを作って試してみては?
またmakeを使わず手動でアセンブル・リンクした場合は正しく動作しますか?

それでだめなら各ツールのバージョン情報と
makefileの中身を公開してはどうでしょう。

win98が悪いと言うよりツールが古すぎる
という可能性もあるかもしれませんね。
0025himagineNGNG
よく考えると、APにはVFATは関係ないなあ。
不思議だ。
Win98の古いシステムコールの問題?
ファイルのプロパティで、ファイルの作成、更新日時の
関係はどうでしょう?

順序が正しく実行されていて、エクスプローラで見て2秒ずれてる
のだから、makefileは問題ないと思う。
0026名無しさん@お腹いっぱい。NGNG
ツールが独自にタイムスタンプを変えているんじゃないだろうか。
この場合アセンブラがobjに未来の時間を設定してるか、リンカが
exeに過去の時間を設定してるか。

どっちに問題があるかを見るために、アセンブラ&リンカの起動前と
終了後にtime /tとかいれて時間を表示させてみたら?

原因を調べる工夫をするか、その程度の知恵もないなら、がまんすれば?
0027名無しさん@お腹いっぱい。NGNG
あと、いくつかのobjが新しい、ならそれを減らしていって同じ症状がでる
のか、調べろ。そういったことに頭が働かないとは、OL並みの低脳さだな。
0028名無しさん@お腹いっぱい。NGNG
思うように動きません。OSのバグでちゅ〜 ばぶぅ〜

#質問する以上、それに答えられる人間がいると思っているようだが、
#それなら、その人間がなぜ原因を究明できるのか、考えろ。
#魔法を使っているわけでも、秘伝書がどこかにあるわけでもないぞ。
0029名無しさん@お腹いっぱい。NGNG
0030名無しさん@お腹いっぱい。NGNG
リモートドライブでやってるから、ちゅうのは、ないか、さすがに…
0031名無しさん@お腹いっぱい。NGNG
時をかけるコンパイラ
0032名無しさん@お腹いっぱい。NGNG
そして謎を残したまま1は2度と現れなかった...
0033名無しさん@お腹いっぱい。NGNG
NFSでも使ってんのか?

ntpで時刻あわせしてたとかなら笑えるけど...
0034名無しさん@お腹いっぱい。NGNG
全然関係ないかもしれないが、私の使っているmakeは
ソースとオブジェクトのタイムスタンプが同じだと
もう一度コンパイルをしてしまうようです。
エディタを終了してすぐさまmakeすると同じタイムスタンプに
なってしまうことがあるらしく、次にmakeするときに
直してもないソースまでコンパイルしてしまうということが
よくありました。
0035名無しさん@お腹いっぱい。NGNG
それはどのmakeでも同じだよ。コンパイルが必要か否かが判断できない
場合は安全側に倒してコンパイルするようになっている。
タイムスタンプの分解能が粗いOSだとけっこううっとうしいけど、
そうでないと困る。
00361NGNG
なんかボロクソに言われてますが、
sageでも書いていただいた皆さんありがとうでした。

あー、それはここをこういじれば
オッケーだよ、とかっていう返事を
期待した自分がバカでした。

自分でちゃんと調べてみます。
0037名無しさん@お腹いっぱい。NGNG
一般的なwin95/98の問題ならサーチすれば容易に引っかかるはずだろ?
そうでないなら、その何とかというコンパイラとの相性なんだから、
まず調べろってことだ。コンパイラのメーカのサイトは探したのか?

>自分でちゃんと調べてみます。
何もかも順序が逆なんだよ。
0038名無しさん@お腹いっぱい。NGNG
そして謎を残したまま...
0039名無しさん@お腹いっぱい。NGNG
いいから、
1はまず3を実行しろ。
0040無名NGNG
みんな偉そう。本当は分かってないくせに。
0041無名NGNG
プログラマって、人をいじめるのが、そんなにおもしろいのだろうか?
おまえら、悲しいね。
0042名無しさん@お腹いっぱい。NGNG
>40=41
おまえも3を実行しろ。
0043名無しさん@お腹いっぱい。NGNG
>>40@`41
つーかどうでもいいことなんだよな
第一、きあいいれて調べたところで何かあるわけでなし
ボランティアだよ?
文句言う前に自分から調べたり、少しずつ前向きに
レスすることから初めてはいかがか。
私は、解ってること以外は書かないからここには邪魔してないけどさ。
0044名無しさん@お腹いっぱい。NGNG
口は悪いが言ってることは正しいと思うが。
24@`26@`27がいったことを1は、やりもしない。
win98の問題なのかツール側の問題なのかは、現在のところ分からないが、
問題点の切り分けをするために上記程度の作業を惜しむのはなぜだ?
もしそれも必要がないほど明々白々なwin98の問題なら、37にあるように
あちこちにレポートが上がっているはずだ。それを1は探したのか?

1が期待することをしてやれということは、ようは上記のことを1の
かわりにだれかがやるということだ。
0045名無しさん@お腹いっぱい。NGNG
ついでにいえば、1は頭からwin98のキャッシュを疑っているようだが、
私が知る限りタイムスタンプ周りのバグは過去に一件もない(それ
以外の問題ならいろいろあるが)。

どうしてもキャッシュを切りたければコントロールパネル-システム-
パフォーマンス-ファイルシステム-トラブルシューティングにある
チェックを片っ端からONにしろ。

バグを追い詰めるアプローチとしてあてずっぽにあれこれやるようで
感心しないがな。もう一度いうが、これはプログラマのレベルではないぞ。
0046名無しさん@お腹いっぱい。NGNG
リンクのあとにtouchでもすれや。
0047>46NGNG
MS-DOSにタッチコマンドあったっけ?
0048名無しさん@お腹いっぱい。NGNG
>>47
そこらへんに落ちてるし、コンパイラのおまけについてたりする。
0049名無しさん@お腹いっぱい。NGNG
だからリンクする前にdeltree c:\だってば。
0050名無しさん@お腹いっぱい。NGNG
デフラグ中に電源落とすんだよ!
00511NGNG
やりもしないと言われても、やる閑が無いのですわ。
連休はしっかりリフレッシュさせてもらったし。ワラ
今日も朝から晩までミーティング。

ソース1個っていうのはやりました。
当然エラーでロードモジュールはできないけど、
エラーファイルがオブジェクトより古い、、、。

それとバッチファイル化もやりました。
これまた現象変わらず。

怪しいのはリンカとwin98とみました。
0052名無しさん@お腹いっぱい。NGNG
>>51
まさかとは思うが・・・
システムの時間がずれてるなんてこと無いよな?
0053名無しさん@お腹いっぱい。NGNG
それなりに仕事してたら、ヒマが無いのはみーんなオンナジよね。

回答している方々は忙しい中のリフレッシュのひとつが2ちゃん
なんだと思うけど、アナタは違うやりかたでリフレッシュなさっ
ているようね。身分の高い方は優雅でらっしゃるわね。

できれば次はアナタの身分にふさわしく、回答する平民の技術力
向上につながるような建設的な質問か、平民の質問への回答を
賜りたいわ。
0054にょだNGNG
makeこまんどにタイムスタンプを無視して強制的に
やるってのあありません?
どのmakeかしりませんけど
0055>54NGNG
たいがいのmakeにはあるだろ。
けど、それがこのスレとどんな関係?
0056名無しさん@お腹いっぱい。NGNG
しかし、本人にとっても優先順位の低い問題を他人の我々が
考える必要って....
気にはなったが、自分の環境で発生したときに考える事にしよう。
1も別に他人が自分に代わって問題を解決してくれるとは期待してい
いないわけだし。
0057名無しさん@お腹いっぱい。NGNG
特殊な環境(この場合組み込み向けのコンパイラやリンカ)か、一般的な環境
(VC++とかのポピュラーなコンパイラ)でも発生するのか、といったプログラマ
としての基本的なアプローチがなっていないな。上で誰かがいった時間表示
もやってないようだし(ちなみにtime /tでは秒まで出ないが、プログラマなら
それくらいのプログラム作れるだろ)。ところで盛んにwin98のせいにしたがって
いるようだが、その後どうするんだ?

とことで、コンパイラ/アセンブラが未来の日付けをファイルにつけているのでは
なく、リンカが過去の日付けをつけているのではないかと推測した理由はなんだ?
「なんとなく〜」以外の理由があるなら聞かせてみろ。
0058名無しさん@お腹いっぱい。NGNG
俺も前にこんな現象あったかもー
でも、2回makeして、おわしって感じ
別にどーでもいーなんて思ったっけなー
君はマジメなんだね、関心々々。
00593NGNG
だからサービスパック当てろっての!
それと、まともな開発すんならNT/2000使え。
0060名無しさん@お腹いっぱい。NGNG
>58
objとexeが同じ日付けだから2回makeがかかるのはよくある。
objの方が新しい、というのはオレはない。1の勘違いじゃないのか。
じゃなけりゃやっぱコンパイラ/リンカのせいだな。
00611NGNG
カキコしとかないとまた怒られるんで今日の報告。
K6−2の400メガ+うぃん95のマシンに
環境をそっくり移してみました。再現せず。
やっぱり、うぃん98か?
0062名無しさん@お腹いっぱい。NGNG
だからサービスパック当てろっての!
それと、まともな開発すんならNT/2000使え。
ピペ
0063名無しさん@お腹いっぱい。NGNG
どぉわから、何度もいうように、コンパイラかリンカがOSに任せずに
ファイルの更新時間の設定用APIを使って自分で明示的に時間を設定
しており、しかも読んでるAPIが、LFN以前の旧DOSコールだから
秒が1秒単位にならないんじゃないかというとろーが。

それを調べるためにコンパイラやリンカが起動/終了した時間と、ファイルの
更新日付の対応を調べろ、というのに、何もわかっとらんのう。現在時刻を
表示するctime.exeとかを作るかWebで探して
ctime >log.txt
cc test.c
ctime >log.txt
link test.obj
ctime >log.txt
とかやっって、log.txtとtest.c@`test.obj@`test.exeの時間を見ろ。
特に秒の最後が偶数か奇数か。またコンパイル&リンクににそれぞれ
何秒かかっているか、もだ。コンパイルの終了時刻とobjの更新時刻、
リンクの終了時刻とexeの更新時刻を比較すれば、どれが旧APIを
読んでるかわかるだろ。あとプログラム(コンパイラやリンカ)によって
は自分でファイルの更新日付を変更しておきながら、バグっててファイルの
オープン時にカレントタイムを取得して、ファイルの更新後、わざわざ
そのオープン時の時刻に更新日付を設定しなおしているたこのケースがある。
それを見るために、実際のファイルの時間の実例をアップしろというとる
のにそれもせん。

どうせしらべろといっても調べんやつだし、あきれたのでもうレスせん。
後は勝手にやれ。
0064名無しさん@お腹いっぱい。NGNG
しかし1は典型的な思い込みで行動するタイプだな。おまえが言ってることは
結局「なんかわかんないけどwin98にするとおかしいんですぅ」と変わらん
のだよ。(K6-400MHzだと遅いから症状が出ない可能性もある)

プログラマの資格なし。モウスコシ原因究明のアプローチの腕を磨くべし。
普段ソースにデバッグ文をばら撒く力任せのデバッグしかやったこと
ないんとちゃう?限られた情報しか得られない場合、それをどう組み合わ
せれば原因究明できるか、もっと頭を使え。
どう原因をすいり
0065名無しさん@お腹いっぱい。NGNG
酢入り?やわらかそう。
0066名無しさん@お腹いっぱい。NGNG
そんなマンガがあったな。ジャンプだっけ。
0067名無しさん@お腹いっぱい。NGNG
あ〜ぁ
コンパイルが早すぎてタイムスタンプが同じになっちゃうって事ね?

0068名無しさん@お腹いっぱい。NGNG
すればよいかを考えろ。

バッファフラッシュ。藁
■ このスレッドは過去ログ倉庫に格納されています