Sign in Join
Wiki copytemporary

Lazarus Faq/ja: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## 一般的なこと
22
33### どうしてコンパイル後のバイナリがこんなに大きいの?
44
55バイナリが大きくなる理由は、GDB(GNU Debugger)で利用するデバッグ情報を含んでいるためです。
66
77実行ファイルからデバッグ情報を除去するオプション(-Xs)がありますが、 バージョン2.0.2以前のコンパイラではバグのため正しく動きません。バージョン2.0.4以降のコンパイラでは修正されています。
88
99"strip" というプログラムでデバッグ情報を除去することもできます。 これは、Lazarusディレクトリの下のlazarus\pp\bin\i386-win32\\ にあります。
1010
1111コマンドラインから、 "strip --strip-all \<実行ファイルへのパス\>" とタイプすることでデバッグ情報を除去できます。
1212
1313さらにプログラムを小さくしたい場合は、実行ファイルの圧縮ツール [UPX(upx.exe)](http://upx.sourceforge.net/) も利用できます。 これは、"strip" と同じく、Lazarusディレクトリの下の、lazarus\pp\bin\i386-win32\\ にあります。 圧縮を復元するためのメモリのオーバーヘッドはありませんし、復元速度も Pentium 133 で ~10MB/sec 程度と大変高速です。
1414
1515コマンドラインから、"upx \<実行ファイルへのパス\>" とタイプすることで、"upx" を利用できます。
1616
1717"strip" と "upx" を簡単な Lazarus の GUI プログラムに適用すると、Linux で 700kb 程度、 Windows で 420kb 程度のサイズに収まるでしょう。
1818
1919UPXの欠点などの詳細は、[[Size Matters|サイズについてにあります]]。
2020
2121また、重要なことですが、一般的な hello world すら lazarus で作成すると、以下のような大量の機能が含まれてしまいます。
2222
2323- XML 利用ライブラリ
2424- 画像利用ライブラリ(png, xpm, bmp, ico ファイルなど)
2525- Lazarus Component Library(LCL) のほとんどすべてのウイジェット
2626- すべての Free Pascal Runtime Library(RTL)
2727
2828このためにとても大きなサイズになりますが、実用アプリケーションで必要とされる機能をすでに含んでいるともいえます。
2929
3030Lazarus の実行ファイルのサイズは最初から大きいですが、ソースコードやフォームが増えても、少しづつしか増えません。 C++や他の言語では、hello world などはとても小さいかもしれませんが、実用的なアプリケーションを書くようになると急激にサイズが増加するでしょう。
3131
32-<figure>
33-<img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" />
34-<figcaption>Lazarus_vs_cpp.png</figcaption>
35-</figure>
32+![](/wiki-images/d/de/Lazarus_vs_cpp.png)
3633
3734**Lazarus/FPC アプリケーションのサイズを縮小するための簡単なガイド** *(Lazarus 0.9.26 で確認)*
3835
3936- 1\. プロジェクト\|コンパイラオプション\|コード\|スマートリンク可能な(-CX) -\> チェックする。
4037- 2\. プロジェクト\|コンパイラオプション\|リンク\|デバッグ中\|実行ファイルからシンボルを除く(-Xs) -\> チェックする。
4138- 3\. プロジェクト\|コンパイラオプション\|リンク\|リンクスタイル\|スマートリンク(-XX) -\> チェックする。
4239
4340特に 2. が重要と思われます。 単純なアプリケーションは、いままでの 15-20 MB から 1-3 MB になります。 以下を試すのもよいでしょう: プロジェクト\|コンパイラオプション\|コード\|最適化\|速度より最小化を優先(-Os) -\> チェックする。 (実行速度が低下することに注意)
4441
4542- 4\. "UPX \<実行ファイルのパス\>" によって 1/2~1/3 に圧縮されます。 (注意: [[Size Matters|サイズについてにもあるように]]、UPX利用の欠点もあります。)
4643
4744**Chart of default sizes for an empty Application with various settings and operating systems**
4845
4946Well I ran tests I did on Lazarus 0.9.29 with FPC 2.4 (FPC 2.2.4 with Windows). *Optimized compiler* mean using the advices above but *without using UPX*. *Default Lazarus* means as installed from package/setup. *LCL without debug informations* mean after rebuilding Lazarus IDE and LCL without debug informations (-g-).
5047
51-<TABLE WIDTH=642 BORDER=0 CELLPADDING=1 CELLSPACING=0>
52-
53-<TR VALIGN=TOP>
54-
55-<TD WIDTH=263>
56-
57-</TD>
58-
59-<TD WIDTH=14>
60-
6148   
6249
63-</TD>
64-
65-<TD WIDTH=111>
66-
6750Default Lazarus
6851
69-</TD>
70-
71-<TD WIDTH=14>
72-
7352   
7453
75-</TD>
76-
77-<TD WIDTH=220>
78-
7954LCL without debug informations
8055
81-</TD>
82-
83-</TR>
84-
85-<TR VALIGN=TOP>
86-
87-<TD WIDTH=263>
88-
89-<U>Ubuntu 64 bits / Lazarus 64 bits</U>
90-
91-</TD>
92-
93-<TD COLSPAN=4 WIDTH=372>
94-
95-</TD>
96-
97-</TR>
98-
99-<TR VALIGN=TOP>
100-
101-<TD WIDTH=263>
56+Ubuntu 64 bits / Lazarus 64 bits
10257
10358Default application
10459
105-</TD>
106-
107-<TD WIDTH=14>
108-
10960   
11061
111-</TD>
112-
113-<TD WIDTH=111>
114-
1156213,4  Mb
11663
117-</TD>
118-
119-<TD WIDTH=14>
120-
12164   
12265
123-</TD>
124-
125-<TD WIDTH=220>
126-
127667,5 Mb / 8
12867
129-</TD>
130-
131-</TR>
132-
133-<TR VALIGN=TOP>
134-
135-<TD WIDTH=263>
136-
13768Optimized compiler
13869
139-</TD>
140-
141-<TD WIDTH=14>
142-
14370   
14471
145-</TD>
146-
147-<TD WIDTH=111>
148-
149724,4 Mb
15073
151-</TD>
152-
153-<TD WIDTH=14>
154-
15574   
15675
157-</TD>
158-
159-<TD WIDTH=220>
160-
161762,70 Mb (0.29svn FPC2.4 2,5)
16277
163-</TD>
164-
165-</TR>
166-
167-<TR VALIGN=TOP>
168-
169-<TD WIDTH=263>
170-
17178   
17279
173-</TD>
174-
175-<TD COLSPAN=4 WIDTH=372>
176-
177-</TD>
178-
179-</TR>
180-
181-<TR VALIGN=TOP>
182-
183-<TD WIDTH=263>
184-
185-<U>Ubuntu 32 bits / Lazarus 32 bits</U>
186-
187-</TD>
188-
189-<TD COLSPAN=4 WIDTH=372>
190-
191-</TD>
192-
193-</TR>
194-
195-<TR VALIGN=TOP>
196-
197-<TD WIDTH=263>
80+Ubuntu 32 bits / Lazarus 32 bits
19881
19982Default application
20083
201-</TD>
202-
203-<TD WIDTH=14>
204-
20584   
20685
207-</TD>
208-
209-<TD WIDTH=111>
210-
2118619,6  Mb
21287
213-</TD>
214-
215-<TD WIDTH=14>
216-
21788   
21889
219-</TD>
220-
221-<TD WIDTH=220>
222-
223905,7 Mb
22491
225-</TD>
226-
227-</TR>
228-
229-<TR VALIGN=TOP>
230-
231-<TD WIDTH=263>
232-
23392Optimized compiler
23493
235-</TD>
236-
237-<TD WIDTH=14>
238-
23994   
24095
241-</TD>
242-
243-<TD WIDTH=111>
244-
245962,9 Mb
24697
247-</TD>
248-
249-<TD WIDTH=14>
250-
25198   
25299
253-</TD>
254-
255-<TD WIDTH=220>
256-
2571001,6 Mb
258101
259-</TD>
260-
261-</TR>
262-
263-<TR VALIGN=TOP>
264-
265-<TD WIDTH=263>
266-
267102   
268103
269-</TD>
270-
271-<TD COLSPAN=4 WIDTH=372>
272-
273-</TD>
274-
275-</TR>
276-
277-<TR VALIGN=TOP>
278-
279-<TD WIDTH=263>
280-
281-<U>Windows XP 32 bits / Lazarus 32 bits</U>
282-
283-</TD>
284-
285-<TD COLSPAN=4 WIDTH=372>
286-
287-</TD>
288-
289-</TR>
290-
291-<TR VALIGN=TOP>
292-
293-<TD WIDTH=263>
104+Windows XP 32 bits / Lazarus 32 bits
294105
295106Default application
296107
297-</TD>
298-
299-<TD WIDTH=14>
300-
301108   
302109
303-</TD>
304-
305-<TD WIDTH=111>
306-
30711011,8 Mb
308111
309-</TD>
310-
311-<TD WIDTH=14>
312-
313112   
314113
315-</TD>
316-
317-<TD WIDTH=220>
318-
3191142,14 Mb
320115
321-</TD>
322-
323-</TR>
324-
325-<TR VALIGN=TOP>
326-
327-<TD WIDTH=263>
328-
329116Optimized compiler
330117
331-</TD>
332-
333-<TD WIDTH=14>
334-
335118   
336119
337-</TD>
338-
339-<TD WIDTH=111>
340-
3411201,62 Mb
342121
343-</TD>
344-
345-<TD WIDTH=14>
346-
347122   
348123
349-</TD>
350-
351-<TD WIDTH=220>
352-
3531241,50 Mb
354125
355-</TD>
356-
357-</TR>
358-
359-<TR VALIGN=TOP>
360-
361-<TD WIDTH=263>
362-
363126   
364127
365-</TD>
366-
367-<TD COLSPAN=4 WIDTH=372>
368-
369-</TD>
370-
371-</TR>
372-
373-<TR VALIGN=TOP>
374-
375-<TD WIDTH=263>
376-
377-<U>Windows Seven 64 bits / Lazarus 64 bits</U>
378-
379-</TD>
380-
381-<TD COLSPAN=4 WIDTH=372>
382-
383-</TD>
384-
385-</TR>
386-
387-<TR VALIGN=TOP>
388-
389-<TD WIDTH=263>
128+Windows Seven 64 bits / Lazarus 64 bits
390129
391130Default application
392131
393-</TD>
394-
395-<TD WIDTH=14>
396-
397132   
398133
399-</TD>
400-
401-<TD WIDTH=111>
402-
40313412,3  Mb
404135
405-</TD>
406-
407-<TD WIDTH=14>
408-
409136   
410137
411-</TD>
412-
413-<TD WIDTH=220>
414-
4151383,20 Mb
416139
417-</TD>
418-
419-</TR>
420-
421-<TR VALIGN=TOP>
422-
423-<TD WIDTH=263>
424-
425140Optimized compiler
426141
427-</TD>
428-
429-<TD WIDTH=14>
430-
431142   
432143
433-</TD>
434-
435-<TD WIDTH=111>
436-
4371442,14 Mb
438145
439-</TD>
440-
441-<TD WIDTH=14>
442-
443146   
444147
445-</TD>
446-
447-<TD WIDTH=220>
448-
4491482,16 Mb
450149
451-</TD>
452-
453-</TR>
454-
455-</TABLE>
456-
457150### 'Fatal: Circular unit reference between a and b'(ユニットの循環的参照)エラーの回避
458151
459152新規ユーザーが、2つのフォーム(TForm)で相互にプロパティを参照し合いたい場合などに陥りやすいエラーです。このエラーは、「uses」を「interface」セクションで宣言しているためにおこり、「uses」を「implementation」に移すことで解消できます。
460153
461154エラーとなる例:
462155
463156` unit a;`\
464157` `\
465158` interface`\
466159` `\
467160` uses b;`\
468161` `\
469162` implementation`\
470163` `\
471164` end.`\
472165` ...`\
473166` unit b;`\
474167` `\
475168` interface`\
476169` `\
477170` uses a;`\
478171` `\
479172` implementation`\
480173` `\
481174` end.`
482175
483176エラーとならない例:
484177
485178` unit a;`\
486179` `\
487180` interface`\
488181` `\
489182` implementation`\
490183` `\
491184` uses b;`\
492185` `\
493186` end.`\
494187` ...`\
495188` unit b;`\
496189` `\
497190` interface`\
498191` `\
499192` implementation`\
500193` `\
501194` uses a;`\
502195` `\
503196` end.`
504197
505198### どうしてリンクがWindowsでは遅いのでしょうか?
506199
507200この問題は、 FPC2.2 以降かつ Lazarus 0.9.24 以降で解決されています。 Lazarus を更新してみてください。 古いバージョンについては以下を参照してください。
508201
509202一般的に、Windows でのリンクは他のプラットホームより時間がかかります。 これは、Free Pascal で利用している GNU リンカの動作が Windows で遅いためです。 この問題は Windows のみに影響し、比較的古くメモリの少ないコンピュータ (1GHz以下、128MB以下)で顕著に現れます。
510203
511204また、LCL をスマートリンクしている場合、リンク作業はさらに遅くなります。 この問題についての調査は[[File size and smartlinking/ja|ファイルサイズとスマートリンクにあります]]。
512205
513206内部リンカはすでに開発されていますが、 FreePascal 2.2 以上でないと利用できません。これは、リンク時間を劇的に短くします。
514207
515208**注意**: 2.1.1 では、Windows は win32/64/ce のために内部リンカを利用します。 これは作業を少し早めるでしょう。 Lazarus は 再コンパイルを行い、280MB ほどを使います。
516209
517210### ppc386.cfg や fpc.cfgは必要でしょうか?
518211
519212fpc.cfgのみ必要です。 コンパイラがライブラリを見つけるための方法が書いてあります。
520213
521214### どうしたらLazarusをコンパイルできますか?
522215
523216たとえば次のようにしてください。
524217
525218`$ cd lazarus`\
526219`$ make clean all`
527220
528221### どのようにしたら、LCLをベースとした他のプロジェクトをビルドできますか?
529222
530223アプリケーション作成に IDE を使えない場合、lazbuild を利用してください。 これはコマンドライン版の Lazarus プロジェクトのビルド環境です。 IDE も lazbuild も使えない場合、fpc.cfg の最後に次の行を追加してください。
531224
532225`  # 他のツールキットの探索パス (Linux)`\
533226`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{ツールキット}`
534227
535228`  # 他のツールキットの探索パス (Windows)`\
536229` -Fu/{YourLazarusDirectory}/components/units/{ツールキット}`
537230
538231
539232{ツールキット} には、*gtk2*、*gnome*、*qt* や *win32* などを入れ、下記を実行してください。
540233
541234
542235ppc386 your.project.pp
543236
544237**ヒント:** ツールキットの開発パッケージのインストールを忘れないでください。 こんなメッセージを受け取るかもしれません。: [[Linker message: cannot find -l]].
545238
546239### どのバージョンの FPC(FreePascalCompiler) が必要ですか?
547240
548241FPC Version 2.2.2 が全オペレーティングシステムに対する推奨バージョンです。
549242
550243### Lazarusのコンパイルができません。
551244
5522451. コンパイラは正しいバージョンですか?
5532462. fpcのライブラリは同じバージョンですか?
5542473. コンパイラのインストールパスはスペースを含まないように!
5552484. fpc.cfg はありますか? 古い ppc386.cfg はあったらだめですよ。
5562495. OS 依存についての FAQ も確認してください。
557250
558251### プロジェクトをコンパイルしようとするとエラーがでます
559252
560253#### "Cannot find Unit interfaces". これはどうしたら解決できますか?
561254
562255これは、コンパイラが *interfaces.ppu* を見つけられなかったり、 見つけたが それがおかしなファイルであるときに表示されます。
563256
564257このユニットは、 {LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu にあります。 (例えば、/home/username/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu)。
565258
566259他の場所などに色々なバージョンの *interfaces.ppu* がある場合、間違った構成になっている(例えば、検索パスに lcl のディレクトリを追加していたり)可能性が高いため、全ての *interfaces.ppu* を削除して、上記のディレクトリの *interfaces.ppu* だけにしてください。
567260
568261また、Lazarus をビルドするのに用いた widgetset と異なる widgetset を選択した場合、その widgetset 用に LCL をビルドする必要があります。
569262
570263上記の確認後にもこのエラーが発生する場合、 あなたが Lazarus IDE をコンパイルするのに用いたコンパイラやrtlと異なるコンパイラやrtlを用いてプロジェクトをコンパイルしていると考えられます。 以下を試してください。
571264
572265- LCL (もしくは、Lazarus丸ごと) を 環境 -\> オプション で選択しているコンパイラでリビルドしてください。 リビルドは、 ツール -\> Lazarusを構築 で行えます。 構築前に、 ツール -\> "Lazarus構築"を設定 で、現在の設定を確認してください。
573266
574267- 環境 -\> オプション で、コンパイラを Lazarus をコンパイルしたものに変更してください。 また、環境 -\> オプション で Lazarusディレクトリ や FPCソースディレクトリ へのパスが正しいかどうか確認してください。 さらに、コンパイラ構成ファイルである fpc.cfg が1つのバージョンのものだけがあるかどうか確認してください。 Linux/Unixシステムでは、/etc/ に、 Windows システムでは、fpcコンパイラと同じディレクトリにあるはずです。 "fpc -vt bogus" を実行し、どの fpc.cfg を利用しているかを確認してください。 コンパイラをアップデートした場合に、しばしば古いコピーがこっそり残ります。 ユーザーのホームディレクトリや新しいコンパイラをビルドしたディレクトリなどを確認して、これらを消去してください。
575268
576269- また、プロジェクトに利用しているウィジェットのセットを変更しても良いかもしれません。 例えば、Lazarus のサンプルフォルダにある "objectinspector" は、 gtk でコンパイルされています。 このプロジェクトを windows 上でコンパイルすると "Can't find unit interfaces" メッセージが表示されるでしょう。 ウィジェットセットを プロジェクト\|コンパイラオプション...\|LCLウィジェットタイプ(様々) から デフォルト(Win32) に変更することで問題が解決されます。
577270
578271### Delphi プロジェクトを lazarus でコンパイルしようとしたらエラーがでました
579272
580273#### {\$R *.DFM}という行について: これはどのように解決できますか?
581274
582275Lazarus (Linux という方が分かりやすい) はリソースを解釈できませんので、Delphi/Win32 でしていたような方法をとることはできません。しかしながら、Lazarus はこれと似たようなシンプルな代替方法が使用できます。次の手順を使えば、 Delphi レイアウト(.dfm ファイル)を使用できます:
583276
584277- オリジナルの .dfm ファイルが必要です。 Delphi5 以降はこれがデフォルトに成っています。もし古いバージョンを使っているのなら: ALT + F12 でテキストでレイアウトを参照して、コピー&ペーストすることができます。テキストの .dfm ファイルが得られたら、.lfm ファイルにコピーして下さい。
585278- (lazarus/tools の)lazres を使ってファイルを作成します。
586279
587280`     lazres yourform.lrs yourform.lfm`
588281
589282- イニシャライズセクションに次の行を付け加えます
590283
591284`     initialization`\
592285`     {$I yourform.lrs}`
593286
594287lazarus では dfm ファイル内の全てのプロパティがサポートされているわけではないことを心にとどめておいて下さい。クラッシュする場合もあります。
595288
596289#### 'Identifier not found LazarusResources'というエラーが発生します。
597290
598291フォームを作成しているとき、Lazarusは自動的に他のユニットをフォームユニットのusesセクションに追加します。しかし、DelphiのユニットをLazarusのユニットに変換したときは、これは起こりません。 ですから、その場合LResourcesをフォームのユニットのUsesセクションに、追加する必要があります。
599292
600293### オブジェクトのイベントにアクセスする時、たとえば、ボタンのolclickイベントなどで、次のようなエラーが出ます。 ERROR unit not found: stdCtrls
601294
602295Project -\> Project Inspectorで、プロジェクトが'LCL'パッケージに依存していることを確かめてください。そして、FPCソースをインストールしていることを確かめてください。
603296
604297LazarusはIDEであり、LCLというビジュアルコンポーネントライブラリです。その他のIO,Database,FCL,RTLといったものは、FPCから提供されます。IDEは全てのソースへのパスを必要とします。
605298
606299FPCのソースパスは、次のように設定できます。 Environment -\> General Options -\> Files -\> FPC source path
607300
608301### 別のファイルなしで、実行ファイルだけにできますか?どうしたらリソースを埋め込むことができますか?
609302
610303例えば、次のようにしてください:
611304
612305`/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
613306
614307これは、sound1.wavとsound2.wabから、sound.lrs(訳注:というLazarusのリソースファイル)を生成します。
615308
616309そして、これをlrsフォームにこっそりインクルードします。
617310
618311`...`\
619312`initialization`\
620313`{$i unit1.lrs} // 必ず最初にメインのリソースファイルを指定します。`\
621314`{$i sound.lrs} // ユーザー定義のリソースファイル`\
622-\
315+
623316`end.`
624317
625318プログラムで、これらのファイルを使うことが出来ます。
626319
627320`Sound1AsString:=LazarusResources.Find('sound1').Value;`
628321
629322(訳注:とりあえずバイナリファイルをStringとして取り出すことができる あとは、これをファイルに書き出して読み込むか、ストリームとして流し込むか、など)
630323
631324### Lazarusで使っている色んなファイル拡張子にはどんな意味がありますか?
632325
633326[[Lazarus Tutorial/ja|Lazarus Tutorial/ja#The Lazarus filesで]]例としていくつかの拡張子について説明しています。 ここでは簡潔に示します。
634327
635328`*.lpi`
636329Lazarus Project Information ファイル (XML形式; プロジェクト固有の設定情報を持っています)
637330
638331`*.lpr`
639332Lazarus Program file; メインのプログラムとなるパスカルのソースです。
640333
641334`*.lfm`
642335Lazarus Form file; フォーム上の全てのオブジェクトの情報を持っています。 (Lazarus固有のフォーマットです。アクションは対応する`*.pas` ファイル内に記述されます)
643336
644337`*.pas` or `*.pp`
645338Unit with Pascal code; Pascal で書かれたユニット (一般的にフォームは対応する`*.lfm`ファイルにあります。)
646339
647340`*.lrs`
648341Lazarus Resource file; リソースファイル (これは生成されたファイルです。Windowsのリソースファイルと混同しないでください。). (訳注: フォームの要素などを定義したファイルです。)
649342
650343このファイルは、lazres tool (ディレクトリLazarus/Toolsにある)で、コマンドラインを使って生成されます。
651344
652345` lazres myfile.lrs myfile.lfm`
653346
654347`*.ppu`
655348Compiled unit; コンパイルされたユニット
656349
657350`*.lpk`
658351Lazarus package information file. (XML形式; パッケージ固有の設定情報を持っています)
659352
660353### テキストファイル型変数を *var mytext: text;* と宣言すると "Error: Error in type definition" と言われる。どうすればいいの?
661354
662355TControl クラスが [[doc:lcl/controls/tcontrol.text.html|Text]] プロパティを持っているからです。フォームのメソッドの中では、system ユニット(訳注: 暗黙のうちに uses される、Free Pascalのランタイムライブラリ)にある [[doc:rtl/system/text.html|Textよりもこちらが]]先に見えてしまいます。テキストファイル型に対するいいかえである[[doc:rtl/system/textfile.html|TextFile]] 型を使うか、ユニット名を明示して型宣言を行います。
663356
664357`var`\
665358`  MyTextFile: TextFile;`\
666359`  MyText: System.Text;`
667360
668361同様の問題がファイル名の登録とテキストファイルのクローズの際に起こります。TForm が *assign* メソッドと [[doc:lcl/forms/tcustomform.close.html|Close]] メソッドを持っているからです。 [[doc:rtl/objpas/assignfile.html|AssignFile]] 及び [[doc:rtl/objpas/closefile.html|CloseFile]] を用いるか、手続き名に system を付けて下さい(訳注: system.assign, system.close とする)
669362
670363### Printer.BeginDoc がエラーを起こす
671364
672365Printers ユニットを uses 節に含める必要があります。
673366
674367Printer4Lazarus パッケージをプロジェクトが必要とするものの中に含める必要があります。これはIDEから次のようにします: Project\|Project Inspector\|Add\|New Requirement\|Package Name:
675368
676369ドロップダウンボックスの中に Printer4Lazarus パッケージがなければ、インストールしなければなりません。このパッケージは、Lazarusをインストールした時に次のディレクトリに置かれています: \[lazarus installed directory\]\components\printers
677370
678371\[lazarus installed directory\] はデフォルトでは以下のの通りです:
679372
680373- Windows: c:\lazarus
681374- Linux: /usr/lib/lazarus
682375
683376`Printer.Printers を参照すると例外が発生する場合も同様にしてください。`
684377
685378### TForm.ClientWidth/ClientHeightがTForm.Width/Heightと同じ値になるのはなぜ?
686379
687380LCLではTForm.Width/Heightはフレームを含まないので、同じになります。なぜなら、すべてのプラットホームでフレームのサイズを取得する方法がないからです。 (特定のOS上などに限定するなどして)信頼できる方法でなくてもよければ、LCLは(フレームを含まない指定値によって)フォームをスクリーン上で移動やリサイズすることができます。
688381
689382一方、すべてのプラットホームで、フレーム込みのウインドウサイズについては取得することができ、変更することもできます。
690383
691384過去のLCLフォームとの互換性を保つために特殊なバージョンの定数といくつかの拡張メソッドが追加されるでしょう。
692385
693386## Debugger
694387
695388### どうしたらデバッグ出力を見る事ができますか?
696389
697390LCLにはデバッグ出力に書くためのLCLProc手続きがあります。
698391
699392- **DebugLn:** は引数に1つの文字列しか受け取れませんが、WriteLnと同じように動作します。* **DbgOut:** は引数に1つの文字列しか受け取れませんが、Writeと同じように動作します。
700393
701394(*訳注:PascalではWrite,WriteLnは可変引数を取る稀有な関数である。)
702395
703396普通の環境では、出力はstdoutに対して行われます。しかし、stdoutが閉じている場合(たとえば、{\$AppType Gui}のアプリケーションであったり、Windowsで -WGオプションが指定されてコンパイルされている場合など)、出力されません。
704397
705398デバッグ出力は、そのような時でもファイルに出力されます。LCLProcユニットはinitialization部で、'--debug-log=\<file\>'というコマンドラインパラメータをチェックします。もし、これがあれば、デバッグ出力を\<file\>にします。
706399
707400この--debug-logコマンドラインパラメータがない場合、環境変数 xxx_debuglogが存在するかどうか確認します。xxxは、拡張子のないプログラムファイル名です。lazarusの場合は、lazarus_debuglogです。もし、このような環境変数がある場合、デバッグ出力のためのファイルを使います。たとえば、
708401
709402` set lazarus_debuglog=c:\lazarus\debug.txt`
710403
711404としたとしましょう。 デバッグ出力は、c:\lazarus\debug.txtに行われます。
712405
713406この実装は、lclproc内で行われ、全てのアプリケーションはlclprocを使うため、この出力手法を使うことができます。 Lazarusをデバッグする場合 : Windowsでもっとも効果的な方法です。もし、出力をコンソールに出したい場合、lazarus.ppに{\$APPTYPE console}を加えてください。そして、Lazarusをリビルドしてください。
714407
715408### How Can I inspect properties?
716409
717410You have to use the latest FPC from trunk (2.5.1) or 2.4 once it is released.
718411
719412If you compile your application using -gw (dwarf debug info), you should be able to inspect properties.
720413
721414Note this is only true for properties that map directly to a variable (the "read" declaration points to a member, not a function).
722415
723416If your property returns the value of a function it is very dangerous to evaluate/inspect it. It would require this function to be called, and very often it would change the values of some of your variables. This would mean it would alter the state of your application in the debugger, and any further code-execution, debugging or inspections would return incorrect results.
724417
725418The optional ability to explicitly inspect the results of functions (with the risks described) , and therefore calling code from the debugger is not yet implemented
726419
727420### Why does the debugger not show some Variables/Structures ("no such symbol"/"incomplete type")
728421
729422For problems debugging: - properties\
730423\- Array of ... (Dynamic Array)\
731424\- Variables in Nested Procedures\
732425\- "no such symbol in context"\
733426\- "incomplete type"\
734427Please see [[GDB Debugger Tips]]
735428
736429### How can I debug FCL components from packages with Lazarus
737430
738431FCL components and classes are built without debug information by default and as a result, gdb cannot access component methods or properties. To build package components they must be rebuilt with a debug-line information "-gl" switch.
739432
740433This example assumes you have a Linux distribution with /usr/local/ installation prefix and that the Database package fcl-db is what is needed to contain debug-line information. While the fcl-db is used in this example, you may issue this make command from ANY of the included packages.
741434
742435Before you begin, you need to locate your FPC path by examining your FPC configuration file. The file (fpc.cfg) is located at /etc/fpc.cfg. Display the contents of fpc.cfg and find your fpc installation path. Look for a line starting with -Fu in the fpc.cfg:
743436
744437`-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*`
745438
746439Make scripts are installing units into INSTALL_PATH/lib/fpc/\$fpcversion/units/\$fpctarget/, so you must be sure that /usr/local is the installation path, and should be assigned to INSTALL_PREFIX, otherwise the Make scripts will place units where they don't belong or the Make script will fail.
747440
748441**Step 1**: Open a shell terminal\
749442**Step 2**: cd /user/local/share/src/fpc-2.3.1/fpc/fcl-db/\
750443**Step 3**: sudo make clean all install INSTALL_PREFIX=/usr/local OPT=-gl\
751444Note: INSTALL_PREFIX parameter should be properly configured for units to be installed. In the sample below /usr/local is a default fpc path for Linux, but may vary on other OSes.
752445
753446`make clean all install INSTALL_PREFIX=/usr/local OPT=-gl`
754447
755448Finally, after rebuilding any FCL units you may want to rebuild LCL as well.
756449
757450### Problems with GDB on Mac OSX
758451
759452[[GDB Debugger Tips|Please see here for debugger issues under Mac]]
760453
761454## Contributing / Making Changes to Lazarus
762455
763456### IDE の、メッセージウィンドとソースエディタウィンドをドッキングできる素敵なパッチを作成したのですが、採用してくれませんか?
764457
765458完全なドックマネージャ(ドッキングマネージャ)を作るという目標があるので、ドッキングについてのちょっとしたパッチは、採用されません。 完全なドックマネージャとは、
766459
767460- すべてのIDEウインドウをドッキングできる。
768461- ユーザー定義ウインドウをドッキングできる。
769462- ドッキングレイアウトを保存して、次にロードされたときは再生できる。
770463- ページとしてもドッキングできる。
771464- ドラッグドロップを必ずしも必要としない。
772465
773466これらは大変難しいものと思われますが、そうでなければパッチは拒否されます。
774467
775468Such patches will not be applied, because they only implement a small part of the needed docking. The goal is to create a complete dock manager and use that. A complete dock manager can dock all IDE windows and it allows to let the user define how to dock. For example dock the messages window above or below the source editor or ... or not at all. For instance:
776469
777470 +-------------------++--+
778471 |menu || |
779472 +-------------------+| |
780473 +--++---------------+| |
781474 |PI|| Source Editor ||CE|
782475 +--+| || |
783476 +--+| || |
784477 | |+---------------++--+
785478 |OI|+-------------------+
786479 | ||messages |
787480 +--++-------------------+
788481
789482The dock manager can store the layout and restore it on next load. Preferably the dock manager can dock in pages too. The dock manager does not need to use drag and drop. All patches implementing docking without a dock manager makes it harder to implement a real dock manager and will be rejected.
790483
791484As a temporary solution you can use this IDE extension: [[Manual Docker]]
792485
793486### lazarusを修正したり、改良しました。どのようにしたら公式Lazarusソースに、自分の変更を加えることができますか?
794487
795488パッチを作成して、開発者グループに送ってください。詳細は、[[Creating A Patch/ja|Creating A Patch/jaを]]見てください。
796489
797490### どうしたら、lazarusの開発者、SVNのアクセス管理者、バグトラッカーになれますか?
798491
799492まず最初に、Lazarusのことを学び、あなたのスキルと知識を証明してください。 [[Lazarus Documentation|wiki articlesを]]読むことからはじめて、ソースコードを読み、 [Lazarus Bug-Tracker](http://www.lazarus.freepascal.org/mantis)を見て、いくつかのバグをfixした上で、もし、あなたが充分そうなる資格があると思ったら、[メーリングリストの開発者コミュニティ](http://www.mail-archive.com/lazarus@miraclec.com)にコンタクトしてみてください。
800493
801494## 定義はどこにありますか?
802495
803496### 仮想キーコード定数
804497
805-仮想キーコード定数は、LCLTypeに定義されています。仮想キーコード定数を使うユニットの<b>uses</b>内にLCLTypeを加えてください。 Virtual key constants are defined in LCLType. Add LCLtype to your <b>uses</b>.
498+仮想キーコード定数は、LCLTypeに定義されています。仮想キーコード定数を使うユニットのuses内にLCLTypeを加えてください。 Virtual key constants are defined in LCLType. Add LCLtype to your uses.
806499
807500## IDEを使う
808501
809502### どうしたら"identifier 補完"を使えますか?
810503
811504\[ctrl\]\[space\]で、identifier補完機能を呼び出すことができます。
812505
813506メニューの*Environment -\> Editor Options -\> Code Tools -\> Automatic Features* で、identifier補完が自動的に高速におこなわれるようにセットすることができます。
814507
815508## Linux
816509
817510### Linux上でIDEから離れてデバッグを行いたいのですが
818511
819512まず、デバッガが必要です。GDBはLinuxの標準的デバッガでいくつかのGUIフロントエンドが使用できます。dddはそのなかでも一般的なもので、多くのディストリビューションに採用されています。lazarus/lclをデバッグ情報付きでコンパイルするには次のようにして、更にデバッグを開始して下さい。
820513
821514` $ make clean; make OPT=-dDEBUG`\
822515` $ ddd lazarus`
823516
824517お断りしておきますがdddはlazarusのデバッガより扱いづらいと思います。例を挙げますと、ddd/gdbは大文字小文字の違いにうるさい言語を対象として作られていますが、Pascalはそうではありません。従ってあなたはそれらのコンテンツを見るためには、すべてを大文字でタイプしなければなりません。詳しくはfpcのマニュアルを参照して下さい。
825518
826519### デバッグ中なのですが、dddはソースコードが見つからないとか、含まれていないとか言います。どうしたらいいんでしょう
827520
828521それはgdbやdddに対してパスが指定されていないことに起因する問題によるものです。解決できる問題です。
829522
830523- dddのメニューから "Change directory"コマンドを使ってソースコードが存在するディレクトリを指定してください。しかしこの方法ではプログラムを開始したディレクトリを使用することができません。あなたは複数回ディレクトリを指定し直す必要があるかもしれません。
831524
832525- dddのEditメニューからgdb-settingsをたどって、検索パスを追加して下さい。
833526- \$(HOME)/.gdbinitに次のようなテキストファイルを作って下さい。あるいは追加してやって下さい:
834527
835528`     directory /your/path/to/lazarus`\
836529`     directory /your/path/to/lazarus/lcl`\
837530`     directory /your/path/to/lazarus/lcl/include`
838531
839532
840533
841534(訳注:ホームディレクトリ直下に.gdbinitというファイルを作ってくれ、という意味です。これは不可視属性になりますのでls -Aしないと見られなくなります--User:Tooka)
842535
843536### リンク中に/usr/bin/ld can't find -l\<hogehoge\>というエラーが出ます
844537
845538**パッケージベースのディストリビューションの場合(大抵はこれ)**
846539hogehoge.soとかhogehoge.aという名前のファイルを含むパッケージをインストールして下さい。Linuxにおいてダイナミックリンクライブラリは.so、スタティックリンクライブラリは.aの拡張子を持つことになります。Linuxディストリビューションによってはすでにパッケージの名前がhogehogeのものがインストールされているかもしれません。しかし、そのときは開発用パッケージが必要なのかもしれません。hogehoge-devのインストールをしてみましょう。そのなかにhogehoge.aやhogehoge.soがある、ということはよくあることです。
847540
848541**ソースコードベースのディストリビューションや自分で設定したシステムの場合(LFS)**
849542hogehoge.aをmakeしてパスの通ったディレクトリにおいて下さい。必要ならば、hogehoge-version.so(.a)へのシンボリックリンクをhogehoge.so(.a)に作成しておきましょう.
850543
851544**FreeBSD**
852545これはソースコードベースのディストリビューションと同じく、makeしてやって-Fl/use/local/libをfpc.cfgに追加するか、追加して更にLazarusライブラリパスに配置します。 GTK1.2には「FreeBSDのパッケージ名としてのgtk12」があるのを覚えておいてください。 (glibと同じように)
853546
854547**NetBSD**
855548これはソースコードベースのディストリビューションと同じく、makeしてやって-Fl/use/local/libをfpc.cfgに追加するか、追加して更にLazarusライブラリパスに配置します。
856549
857550### どうやってKylix2のプロジェクトをLazarusに変換して取り込めばいいでしょう
858551
859552Kylixのプロジェクトの変換はDelphi/VCLプロジェクトの変換に似ています。
860553
861554LCL(Lazarus Component Library)はDelphiのVCLと互換性を持つように作られています。 KylixのCLXはQTと互換性を持つように作られています。 一般的なヒントを以下に記します:
862555
863556- すべてのCLXが使うQ-ユニット——QForms,QControls,QGraphicsとか——をVCL風に変更してください。Forms,Control,Graphicsのように。
864557- Formを使うソースコードのusesセクションにLResourcesを追加してください。
865558- すべての.xfmファイルをコピーするかリネームして拡張子を.lfmにしてください。
866559- すべての.dprファイルをコピーするかリネームして拡張子を.lprにしてください、
867560- .lprファイルのinterfaceセクションに、Interfacesを追加してください。
868561- {\$R *.res}という記述を削除してください。
869562- {\$R *.xfm}という記述を削除してください。
870563- .pasファイルと.lprファイルに{\$mode objfpc}{\$H+}か{\$mode delphi}{\$H+}という記述を追加してください。
871564- Add an initialization section to the end of each form source and add an include directive for the .lrs file (lazarus resource file):
872565
873566` initialization`\
874567`   {$I unit1.lrs}`
875568
876569
877570The .lrs files can be created via the lazres tool in: (lazarusdir)/tools/lazres.
878571
879572For example: ./lazres unit1.lrs unit1.lfm
880573
881574- Fix the differences. The LCL does not yet support every property of the VCL and the CLX is not fully VCL compatible.
882575
883576### lazarusをコンパイルしているとき、コンパイラがユニットを見つけられません。e.g.: gtkint.pp(17,16) Fatal: Can't find unit GLIB
884577
8855781\. 完全にクリーンな状態してください: 'make clean all' を実行します
886579
8875802\. コンパイラのバージョンを確認してください(2.0.0 以上)
888581
8895823\. コンパイラが正しい設定ファイルを使用しているか確認してください。通常は /etc/fpc.cfg にインストールされます。しかし、fpc は ~/.ppc386.cfg や、~/.fpc.cfg、/etc/ppc386.cfg といったファイルを調べ、最初に見つけたものだけを使用します。 (~ はホームディレクトリを指します)
890583
891584
892585**ヒント:** 'ppc386 -vt bogus'とすることでコンフィグファイルを探すことが出来ます。
893586
894587複数の ppc386.cfg を使用するのは古い方法ですので削除して下さい。
895588
8965894\. コンフィグファイル(/etc/fpc.cfg)の中で fpc のライブラリのパスが正しく設定されているか確認して下さい。fpc のライブラリパスの設定は次のように行います。
897590
898591`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget`\
899592`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
900593`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*`
901594
902595
903596最初の部分のパス(/usr/lib/fpc)は、あなたの環境に適合させて下さい。システムによっては、/usr/local/lib/fpc/...とった指定の仕方をする場合もあります。
904597
905598**ヒント:** コマンドラインから'ppc386 -vt bogus'とすることでサーチパスを確認することが出来ます。
906599
9076005\. コンフィグファイル(/etc/fpc.cfg)の中で LCL のソースファイル(.pp、.pas)が正しく設定されているか確認して下さい:
908601
909602` forbidden: -Fu(lazarus_source_directory)/lcl`\
910603` forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
911604
912605
913606もしあなたの fpc プロジェクトに LCL を付け加えたいなら、上述のfpc のライブラリのパスの後に、次の二つのパスを設置します。:
914607
915608` -Fu(lazarus_source_directory)/lcl/units/$fpctarget`\
916609` -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk`
917610
9186116\. 見つからないユニット(glib.ppu)が fpc ライブラリのディレクトリに存在しているか確認して下さい。例えば、gtk.ppu は /usr/lib/fpc/\$version/units/i386-linux/gtk/ の中に見つけることができます。もしこれらが存在していないならば、fpc ライブラリは正常ではないので、再インストールして下さい。
919612
9206137\. ソースファイルが NFS でマウントされたディレクトリに置かれていないか確認して下さい。あるケースでは、NFS が作成したファイルを不正に更新していました。ソースを NFS ではないディレクトリに移動させて、コンパイルをして下さい。
921614
922615### I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can't find unit CONTROLS
923616
924617Probably you are using a newer fpc package, than that used for building the lazarus binaries. The best solution is to download the sources and compile lazarus manually. You can download the source snapshot or get the source via svn:
925618
926619` $ bash`\
927620` $ svn checkout `[`http://svn.freepascal.org/svn/lazarus/trunk`](http://svn.freepascal.org/svn/lazarus/trunk)` lazarus`\
928621` $ cd lazarus`\
929622` $ make clean all`
930623
931624Make sure that lazarus get the new source directory: Environment-\>General Options-\>Files-\>Lazarus Directory Top
932625
933626### Lazarusのコンパイルをして、リンク中にこんなことを言われます: libgdk-pixbuf not found
934627
935628gdk-pixbufライブラリ(gkt1.x)をインストールするか使用しないようにします。
936629
937630gdk-pixbufライブラリはこちらにあります:
938631
939632RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
940633
941634Debianパッケージ: libgdk-pixbuf-dev
942635
943636ソースコード: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
944637
945638Lazarusでしないように設定するには:"ツール"→"Lazarusのビルド設定"にオプションを追加します。 '-dNoGdkPixBufLib' もしくはコマンドラインで次のようにしてください。 "make clean all OPT=-dNoGdkPixBufLib".
946639
947640### SuSEを使っていますが、リンク時に/usr/bin/ld が Cannot find -lgtk Error というエラーを返します
948641
949642SuSE は gtk の開発用ライブラリを /opt/gnome/lib (64bits 版の場合は /opt/gnome/lib64)にインストールします。このパスは標準的なものではありません。シンプルな解決方法は、/etc/fpc.cfg にこのパスを追加することです。 (-Fl/opt/gnome/lib).
950643
951644### Lazarus crashes with runtime error 211 after I installed a component
952645
953646After I installed a component, Lazarus crashes with the following message:
954647
955648`Threading has been used before cthreads was initialized.`\
956649`Make cthreads one of the first units in your uses clause.`\
957650`Runtime error 211 at $0066E188`
958651
959652How can I fix this?
960653
961654Your freshly installed component is using threads. Fpc on *nix doesn't automatically include threading support, but it must be intialized. This initialization is done in the cthreads unit. Every application using the component needs to add this unit to the uses clause of the main program. Lazarus itself is no exception. This can be done in two ways:
962655
9636561\) Change the source of ide/lazarus.pp: add the cthreads as first unit to the uses clause, so that is looks like this:
964657
965658`uses`\
966659`  //cmem,`\
967660`  cthreads, `\
968661`  {$IFDEF IDE_MEM_CHECK}`\
969662`...`
970663
971664and rebuild lazarus.
972665
9736662\) In order to avoid modifying lazarus.pp file, a fpc compiler option could be used. Once package that uses threads has been compiled, open menu Tools-\>Configure "build Lazarus". Configure "build Lazarus" dialog will be shown, in field "Options:" type -Facthreads and then press "OK" button. The next step is to install the package. Lazarus will be built with option -Facthreads which means that it will treat main program as if unit cthreads where first in uses clause.
974667
975668*Hint:* Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.
976669
977670### スレッドを含むプログラムを実行するとランタイムエラー232で終了する
978671
979672正確なエラーメッセージは:
980673
981674`This binary has no thread support compiled in.`\
982675`Recompile the application with a thread-driver in the program uses`\
983676`clause before other units using thread.`\
984677`Runtime error 232`
985678
986679**解決方法**: メインプログラム(通常は .lpr ファイルです)の uses 節の先頭に cthreads を追加して下さい。
987680
988681### Ubuntu 6.06でIDEのフォントが文字化けするのですが
989682
990683LazarusがGtk1.2でコンパイルされた場合、Gtk2のためのGnome設定/フォントは無効です。 この場合、次のように対処してみてください: (もしまだなければ).gtkrc.mineというファイルをホームディレクトリに作成します。その中に以下の行を納入してください。
991684
992685 style "default-text" {
993686 fontset = "-ipa-uigothic-medium-r-normal-*-*-120-*-*-*-*-jisx0212.1990-0,
994687 -*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
995688 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
996689 }
997690
998691 class "GtkWidget" style "default-text"
999692
1000693ここで120というのはフォントサイズ(12になる)です。適当に調整してください。
1001694
1002695### Ubuntuを使っています。ライブラリが見つからないために Gtk2 プログラムがコンパイルできません
1003696
1004697Ubuntu には、インストールしたライブラリをリンク可能にするためのシンボリックリンクが、全てのライブラリで作成されるわけではないという問題があります。Gtk2 をリンクしようとした際に見つからないと指摘されたライブラリに、適切なシンボリックリンクがあるかどうか確認してください。例えば次のような方法があります:
1005698
1006699 cd /usr/lib
1007700 sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
1008701
1009702実際のライブラリ(上の例では libgdk-x11-2.0.so.0)に対し、\[ライブラリ名\].so (上の例では libgdk-x11-2.0.so)というリンク可能なシンボリックリンクが作られます。
1010703
1011704### どうすればGtk2プログラムをコンパイルすることが出来ますか?
1012705
1013706今のところ、Gtk2 版 IDE は少し不安定(little unstable)です。ですが、Gtk1 版 IDE を使って Gtk2 のソフトウェアをコンパイルすることは可能です。
1014707
1015708Gtk2 用の LCL でリコンパイルするには、メニューの“Tools”-\>“Configure Build Lazarus”から、LCL を clean+build に、everything else を none にセットします。
1016709
1017710Ok ボタンをクリックし、“Tools”-\>“Build Lazarus”を選択します。
1018711
1019712続いてコンパイラオプションに進み、Gtk2 用のウィジェットセットに変更することで、Gtk2 のソフトウェアをコンパイルできるようになります。
1020713
1021714## Windows
1022715
1023716### コンパイラを使っているときに、"The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time." というメッセージが出ることがあります。
1024717
1025718コンパイラディレクトリに make.cmdというOS2用のscriptfileが存在しています。Windows-NTでは、それは必要ないのですが、NTがスクリプトファイルとみなしますので、取り除いてください。
1026719
1027720### コンパイルしているときに、"make\[3\]: ./ppc1.exe: Command not found"というメッセージが出ます。
1028721
1029722どういう訳か、makeコマンドがパスを消失しています。basedirを次のようにセットしてください。
1030723
1031724
1032725make cycle BASEDIR=your_fpc_source_dir_herecompiler
1033726
1034727### Lazarusをコンパイルしているときに受け取るメッセージ
1035728
1036729#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
1037730
1038731makeファイルを更新する必要があります。
1039732
1040733#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
1041734
1042735スペースがはいっているパスにFPCをインストールしていないかどうか、確認してください。スペースがはいっているパスを、Makefileはサポートしません。
1043736
1044737### どうしたらlazarusのように、自分が作ったプログラムをXP風の見栄えにできますか?
1045738
1046739myprogram.exeというプログラムの場合は、myprogram.exe.manifestというファイルを作成し、次をコピーペーストしてください。
1047740
1048741`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`\
1049742`<assembly xmlns="`[`urn:schemas-microsoft-com:asm.v1`](urn:schemas-microsoft-com:asm.v1)`" manifestVersion="1.0">`\
1050743`<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>`\
1051744`<description>programom</description>`\
1052745`<dependency>`\
1053746`  <dependentAssembly>`\
1054747`   <assemblyIdentity`\
1055748`     type="win32"`\
1056749`     name="Microsoft.Windows.Common-Controls"`\
1057750`     version="6.0.0.0"`\
1058751`     publicKeyToken="6595b64144ccf1df"`\
1059752`     language="*"`\
1060753`     processorArchitecture="*" />`\
1061754`  </dependentAssembly>`\
1062755`  </dependency>`\
1063756`</assembly>`
1064757
1065758ほらね、XP風でしょ?
1066759
1067760### WindowsでLazarusで作ったプログラムを実行させるとDOS窓で開始してしまいます
1068761
1069762コマンドラインのコンパイラを使っている場合は-WGオプション(=Windows GUI)を指定してください。 LazarusIDEの場合は、Project menu -\> Compiler Options -\> Linking -\> target OS Specific optionsで、コンパイラオプションダイアログでWindows GUIをチェックしてください。
1070763
1071764## Mac OS X
1072765
1073766### Why does compiling a project fail with 'unknown section attribute: no_dead_strip'?
1074767
1075768Dead code stripping is not supported by the assembler and linker before Xcode 1.5 (available for Mac OS X 10.3.9). Disable the compiler options
1076769
1077770- Code \> Unit style \> Smart linkable (-CX)
1078771- and Linking \> Link Style \> Link smart (-XX)
1079772
1080773## Licensing
1081774
1082775### Can I make commercial applications with Lazarus ?
1083776
1084777Yes, the LCL is licensed under the LGPL with an exception, which allows you to link to it statically without releasing the source of your application. Modifications and enhancements to the LCL must be distributed with source. Lazarus, the IDE, is licensed under the GPL.
1085778
1086779### Why are some components restricted from usage in commercial application ?
1087780
1088781Lazarus comes with additional components, that were developed by third parties. Those are under various other Licenses. If you wish to use them you need to see the License within the source files of those packages. Most of those 3rd party components are in the directory "components".
1089782
1090783### How do I know if a Component is part of the LCL ?
1091784
1092785All LCL units are in the directory "lcl". A List of units belonging to the LCL can be found here <http://lazarus-ccr.sourceforge.net/docs/lcl/> . If you code uses units not listed on this page, you may have used a component that is not part of the LCL.
1093786
1094787### Can I make commercial plug-ins for Lazarus ?
1095788
1096789Yes, the IDEIntf part of the IDE is licensed under the LGPL with the same exception, so that shared data structures in this part will not force you to license your plug-in or design-time package under the GPL. You are free to choose a plug-in of any license; we don't want to limit your choice. Therefore non-GPL compatible plug-ins are allowed. Note that it's not allowed to distribute a precompiled Lazarus with these non-GPL-compatible plugins included statically; however, we do not see this as a severe limitation, since recompiling Lazarus is easy.
1097790
1098791## Contributors and Comments
1099792
1100793This page has been converted from the epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq).
1101794
1102795---
1103796*From the Free Pascal wiki, page "Lazarus Faq/ja", as it stood on 2015-06-06 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
1104797Category: FAQs/ja
1105798Category: Japanese
1106799Category: Lazarus/ja

Back to history