Difference between revisions of "Lazarus Faq/ja"

From Free Pascal wiki
Jump to navigationJump to search
Line 324: Line 324:
 
Environment->General Options->Files->Lazarus Directory Top
 
Environment->General Options->Files->Lazarus Directory Top
  
===Lazarus compiles, but linking fails with: libgdk-pixbuf not found===
+
===Lazarusのコンパイルをして、リンク中にこんなことを言われます: libgdk-pixbuf not found===
Either install the gdk-pixbuf library for gtk1.x or disable the use:
+
gdk-pixbufライブラリ(gkt1.x)をインストールするか使用しないようにします。
  
Where to find the gdk-pixbuf library:
+
gdk-pixbufライブラリはこちらにあります:
  
 
RPMs:
 
RPMs:
 
http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+...&system=&arch=
 
http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+...&system=&arch=
  
Debian packages:
+
Debianパッケージ:
 
libgdk-pixbuf-dev
 
libgdk-pixbuf-dev
  
Sources:
+
ソースコード:
 
ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/
 
ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/
  
 
+
Lazarusでしないように設定するには:"ツール"→"Lazarusのビルド設定"にオプションを追加します。
How to disable the use in lazarus: In Tools->Configure "Build Lazarus" add the option
 
 
'-dNoGdkPixBufLib'
 
'-dNoGdkPixBufLib'
or at command line:
+
もしくはコマンドラインで次のようにしてください。
 
"make clean all OPT=-dNoGdkPixBufLib".
 
"make clean all OPT=-dNoGdkPixBufLib".
  

Revision as of 14:36, 5 August 2006

العربية (ar) Deutsch (de) English (en) español (es) français (fr) magyar (hu) italiano (it) 日本語 (ja) 한국어 (ko) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

このFAQはwww.freepascal.orgからWikiにコピーされたので、保守、拡張しやすくなっています。

一般的なこと

どうしたらもっと他のFAQを見つけることができますか?

オフィシャルWEBサイトを見てください. 他のFAQが同様にあるかもしれません。

どうして出来たバイナリがこんなに大きいの?

バイナリはgdg(GNU Debugger)で使うための多くのデバッグ情報を含んでいるために大きくなります。

コンパイラには実行ファイルから、デバッグインフォメーションを除去するためのオプション(-Xs)があります。しかしながら、2.0.2と、以前のバージョンでは、コンパイラーのバグによって、これは正しく動きません。しかし、開発版ではすでにこのバグは修正されています。

また、デバッグシンボルを除去するために、"strip"というプログラムを利用することができます。Lazarusディレクトリの下の、lazarus\pp\bin\i386-win32\にあります。 コマンドラインで、 "strip --strip-all <実行ファイルパス>" とタイプするだけです。

もし、プログラムをもっと小さくしたいときは、UPX も試してみてください。UPXは実行ファイルの良い圧縮ツールです。圧縮を復元するためのメモリのオーバーヘッドはありません。Pentium 133で ~10MB/sec程度の高速な復元をおこないます。 upxを使うには、コマンドラインから、"upx <実行ファイルパス>" とタイプするだけです。

stripとupxをLazarusをおこなうと、単純なGUIプログラムは

  • ~ 700kb on Linux
  • ~ 420kb on Windows

になります。

もっと詳細な回答は、fpc:Size Mattersにあります。


どうしてリンクがWindowsでは遅いのでしょうか?

一般的に、Windowsでのリンクは他のプラットホームでのリンクよりも時間がかかります。それは、Free Pascalで使われているGNU リンカが、Windowsでは動作が遅いからです。

テストとして、Lazarus 0.9.12ではLCLがスマートリンクされてリリースされていました。これで、以前のリリースとくらべ実行ファイルはstripとupxのあとで30%小さくなりました。しかし、この影響でリンク作業が複雑になり、他のGNU リンカの問題がでてきました。この問題についての調査はFile size and smartlinking/jaにあります。

この問題はWindowsのみで発生しています。そして、比較的古いか、メモリの少ないコンピュータ(1GHz以下、128MB以下)で顕著に現れます。内臓リンカも開発中なので、この問題を解決してくれるでしょう。しかし、準備できるまでにまだ時間がかかります。

しかし、現実的にこの問題を解決するにはどうしたらよいでしょうか。2つの選択肢があります。


  1. smart linkingをOffにしてください。Lazarusでは、 メニューで、Project -> Compiler Options -> Linking tabでチェックボックスをOffにするだけでは不十分です。Otherタブのcustom optionsで "-XS" を指定してください。アプリケーションをコンパイルすれば、スマートリンクされなくなります。
  2. LCLを再コンパイルしてください。メニューから"Tools" -> "Configure Build Lazarus"を選択します。LCLをclean+buildを指定し、その他のすべてを Noneに指定し、"Ok"を押します。そのあと、メニューから"Tools" -> "Build Lazarus"を選択してください。これでLCLはスマートリンクされなくなり、コンパイルが高速になります。しかし、実行ファイルサイズも大きくなります。


ppc386.cfg や fpc.cfgは必要でしょうか?

fpc.cfgのみ必要です。コンパイラがライブラリを見つけるための方法が書いてあります。


どうしたらLazarusをコンパイルできますか?

たとえば次のようにしてください。

$ cd lazarus
$ make clean all

Do something like this:

$ cd lazarus
$ make clean all

どのようにしたら、LCLをベースとした上に他のプロジェクトをビルドできますか?

もしアプリケーション作成にIDEを使えない場合、次の行をfpc.cfgの最後に入れてください。

  1. Add Lazarus libs
 -Fu/your.lazarus.root/lcl/units
 -Fu/your.lazarus.root/lcl/units/{YourToolKit}
 -Fu/your.lazarus.root/components/units
 -Fu/your.lazarus.root/components/units/{YourToolKit}
{YourToolKit} のところは、 GTK, Gnome , Win32 が入ります。

そして、下記を実行してください。

ppc386 your.project.pp


どのバージョンのFPC(FreePascalCompiler)が必要ですか?

FPC Version 2.0.2 が推奨バージョンです。しかしながら、svn version の fpc 2.0.3 and 2.1.x.も使えます。


Lazarusのコンパイルができません。

  1. コンパイラが正しいバージョンか、確認してください。
  2. fpcのライブラリが同じバージョンかどうか確認してください。
  3. fpc.cfgがあるかどうか、そして、古いppc386.cfgがないかどうか、確認してください。
  4. OS依存のFAQを確認してください。


プロジェクトをコンパイルしようとするとエラーがでます

"Cannot find Unit interfaces". これはどうしたら解決できますか?

このコンパイル済みのユニットは{LazarusDir}\lcl\units\{TargetCPU}-{TargetOS}\{LCLWidgetSet}\interfaces.ppuにあります。これが、ただ一つそこにあることを確認してください。もし、色んなバージョンのinterfaces.ppuがあると、たとえば、lclの検索パスのディレクトリに入っていたりすると、間違ったコンフィグレーションになっている可能性が高いです。全てのinterfaces.ppuを削除して、上記のディレクトリのみのものだけにしてください。

もし、これまで使ってきたwidgetsetと違うwidgetsetを選択した場合、そのwidgetset用にLCLをビルドする必要があります。

もし、このとおりになっていて、このエラーが発生した場合、コンパイルしているプロジェクト、利用しているLazarusIDE、とは異なったコンパイラの / rtlを使っています。この場合、次の事を試してください。

  • LCL(もしくは、完全にLazarusを)を環境オプション内で選択しているコンパイラでリビルドします。リビルドは、Tools -> Build Lazarus で行えます。 これを行う前に、Tools -> Configure Build Lazarusで、現在の設定を確認してください。
  • 環境オプションでコンパイラを、Lazarusをコンパイルしたものに変更してください。環境オプションで、Lazarusのパスが正しいかどうか、FPCのソースディレクトリが正しいかどうか、注意深く見てください。コンパイラコンフィグレーションファイルであるfpc.cfgがただ1つのバージョンのものがあるかどうか、確認してください。これは、Unixシステムでは、/etc/か、同じディレクトリに、Windowsシステムでは、fpcコンパイラと同じディレクトリにあります。

コンパイラを新しいバージョンにアップデートした場合、古いコピーが、しばしばこっそり残っています。これらは、ユーザーのホームディレクトリや、新しいコンパイラと同じディレクトリにあるかもしれません。これらを消去してください。


When I try to compile delphi projects under lazarus, I have an error

at the line :{$R *.DFM} How can I solve this problem ?

Lazarus (or better Linux) doesn't know about resources, so you can't use them in the way Delphi/win32 does. However Lazarus uses a method pretty compatible with this. You can still use your Delphi layouts (.dfm files) if you use the following steps:

  • You need a textual version of the .dfm files. D5 and higher are doing this as default. If you have older files: ALT-F12 to see the layout as text and paste/copy. When you have a text .dfm file, just copy it to a .lfm file.
  • Create a file with lazres (in lazarus/tools) lazres yourform.lrs yourform.lfm
  • Add the following initialization section to
     initialization
     {$I yourform.lrs}

Please keep in mind that not all properties in the dfm are supported yet by lazarus, so you might get a crash.

'Identifier not found LazarusResources'というエラーが発生します。

フォームを作成しているとき、Lazarusは自動的に他のユニットをフォームユニットのusesセクションに追加します。 しかし、DelphiのユニットをLazarusのユニットに変換したときは、これは起こりません。 ですから、その場合LResourcesをフォームのユニットのUsesセクションに、追加する必要があります。

オブジェクトのイベントにアクセスする時、たとえば、ボタンのolclickイベントなどで、次のようなエラーが出ます。 ERROR unit not found: stdCtrls

Project -> Project Inspectorで、プロジェクトが'LCL'パッケージに依存していることを確かめてください。そして、FPCソースをインストールしていることを確かめてください。

LazarusはIDEであり、LCLというビジュアルコンポーネントライブラリです。その他のIO,Database,FCL,RTLといったものは、FPCから提供されます。IDEは全てのソースへのパスを必要とします。

FPCのソースパスは、次のように設定できます。 Environment -> General Options -> Files -> FPC source path


別のファイルなしで、実行ファイルだけにできますか?どうしたらリソースを埋め込むことができますか?

例えば、次のようにしてください:

/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...

これは、sound1.wavとsound2.wabから、sound.lrs(訳注:というLazarusのリソースファイル)を生成します。

そして、これをlrsフォームにこっそりインクルードします。

...
initialization
{$i unit1.lrs} // 必ず最初にメインのリソースファイルを指定します。
{$i sound.lrs} // ユーザー定義のリソースファイル

end.

プログラムで、これらのファイルを使うことが出来ます。

Sound1AsString:=LazarusResources.Find('sound1').Value;

(訳注:とりあえずバイナリファイルをStringとして取り出すことができる あとは、これをファイルに書き出して読み込むか、ストリームとして流し込むか、など)


どうしたらデバッグ出力を見る事ができますか?

LCLにはデバッグ出力に書くためのLCLProc手続きがあります。

  • DebugLn: は引数に1つの文字列しか受け取れませんが、WriteLnと同じように動作します。* DbgOut: は引数に1つの文字列しか受け取れませんが、Writeと同じように動作します。

(*訳注:PascalではWrite,WriteLnは可変引数を取る稀有な関数である。)

普通の環境では、出力はstdoutに対して行われます。しかし、stdoutが閉じている場合(たとえば、{$AppType Gui}のアプリケーションであったり、Windowsで -WGオプションが指定されてコンパイルされている場合など)、出力されません。

デバッグ出力は、そのような時でもファイルに出力されます。LCLProcユニットはinitialization部で、'--debug-log=<file>'というコマンドラインパラメータをチェックします。もし、これがあれば、デバッグ出力を<file>にします。

この--debug-logコマンドラインパラメータがない場合、環境変数 xxx_debuglogが存在するかどうか確認します。xxxは、拡張子のないプログラムファイル名です。lazarusの場合は、lazarus_debuglogです。もし、このような環境変数がある場合、デバッグ出力のためのファイルを使います。たとえば、

 set lazarus_debuglog=c:\lazarus\debug.txt

としたとしましょう。 デバッグ出力は、c:\lazarus\debug.txtに行われます。

この実装は、lclproc内で行われ、全てのアプリケーションはlclprocを使うため、この出力手法を使うことができます。 Lazarusをデバッグする場合 : Windowsでもっとも効果的な方法です。もし、出力をコンソールに出したい場合、lazarus.ppに{$APPTYPE console}を加えてください。そして、Lazarusをリビルドしてください。



Lazarusで使っている色んなファイル拡張子にはどんな意味がありますか?

Lazarus Tutorial#The Lazarus filesで例としていくつかの拡張子について説明しています。 ここでは簡潔に示します。

*.lpi
Lazarus Project Information ファイル (XML形式; プロジェクト固有の設定情報を持っています)
*.lpr
Lazarus Program file; メインのプログラムとなるパスカルのソースです。
*.lfm
Lazarus Form file; フォーム上の全てのオブジェクトの情報を持っています。 (Lazarus固有のフォーマットです。アクションは対応する*.pas ファイル内に記述されます)
*.pas or *.pp
Unit with Pascal code (一般的にフォームは対応する*.lfmファイルにあります。)
*.lrs
Lazarus Resource file (これは生成されたファイルです。Windowsのリソースファイルと混同しないでください。).
このファイルは、lazres tool (ディレクトリLazarus/Toolsにある)で、コマンドラインを使って生成されます。
 lazres myfile.lrs myfile.lfm
*.ppu
Compiled unit
*.lpk
Lazarus package information file. (XML形式; パッケージ固有の設定情報を持っています)


*.lpi
Lazarus Project Information file (stored in XML; contains project-specific settings)
*.lpr
Lazarus Program file; contains Pascal source of main program
*.lfm
Lazarus Form file; contains configuration information for all objects on a form (stored in a Lazarus-specific format; the actions are described by Pascal source code in a corresponding *.pas file)
*.pas or *.pp
Unit with Pascal code (typically for a form stored in a corresponding *.lfm file)
*.lrs
Lazarus Resource file (this is a generated file; not to be confused with a Windows resource file).
This file can be created with lazres tool (in directory Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm
*.ppu
Compiled unit
*.lpk
Lazarus package information file. (stored in XML; contains package-specific settings)

lazarusを修正したり、改良しました。どのようにしたら公式Lazarusソースに、自分の変更を加えることができますか?

パッチを作成して、開発者グループに送ってください。詳細は、Creating A Patchを見てください。

Create a patch and send it to the developers. For details see Creating A Patch.

定義はどこにありますか?

仮想キーコード定数

仮想キーコード定数は、LCLTypeに定義されています。仮想キーコード定数を使うユニットのuses内にLCLTypeを加えてください。 Virtual key constants are defined in LCLType. Add LCLtype to your uses.

IDEを使う

どうしたら"identifier 補完"を使えますか?

[ctrl][space]で、identifier補完機能を呼び出すことができます。

メニューのEnvironment -> Editor Options -> Code Tools -> Automatic Features で、identifier補完が自動的に高速におこなわれるようにセットすることができます。

Linux

Linux上でIDEから離れてデバッグを行いたいのですが

まず、デバッガが必要です。GDBはLinuxの標準的デバッガでいくつかのGUIフロントエンドが使用できます。dddはそのなかでも一般的なもので、多くのディストリビューションに採用されています。lazarus/lclをデバッグ情報付きでコンパイルするには次のようにして、更にデバッグを開始して下さい。

 $ make clean; make OPT=-dDEBUG
 $ ddd lazarus

お断りしておきますがdddはlazarusのデバッガより扱いづらいと思います。例を挙げますと、ddd/gdbは大文字小文字の違いにうるさい言語を対象として作られていますが、Pascalはそうではありません。従ってあなたはそれらのコンテンツを見るためには、すべてを大文字でタイプしなければなりません。詳しくはfpcのマニュアルを参照して下さい。

デバッグ中なのですが、dddはソースコードが見つからないとか、含まれていないとか言います。どうしたらいいんでしょう

それはgdbやdddに対してパスが指定されていないことに起因する問題によるものです。解決できる問題です。

  • dddのメニューから "Change directory"コマンドを使ってソースコードが存在するディレクトリを指定してください。しかしこの方法ではプログラムを開始したディレクトリを使用することができません。あなたは複数回ディレクトリを指定し直す必要があるかもしれません。
  • dddのEditメニューからgdb-settingsをたどって、検索パスを追加して下さい。
  • $(HOME)/.gdbinitに次のようなテキストファイルを作って下さい。あるいは追加してやって下さい:
     directory /your/path/to/lazarus
     directory /your/path/to/lazarus/lcl
     directory /your/path/to/lazarus/lcl/include
(訳注:ホームディレクトリ直下に.gdbinitというファイルを作ってくれ、という意味です。これは不可視属性になりますのでls -Aしないと見られなくなります--User:Tooka

リンク中に/usr/bin/ld can't find -l<hogehoge>というエラーが出ます

パッケージベースのディストリビューションの場合(大抵はこれ)
hogehoge.soとかhogehoge.aという名前のファイルを含むパッケージをインストールして下さい。Linuxにおいてダイナミックリンクライブラリは.so、スタティックリンクライブラリは.aの拡張子を持つことになります。Linuxディストリビューションによってはすでにパッケージの名前がhogehogeのものがインストールされているかもしれません。しかし、そのときは開発用パッケージが必要なのかもしれません。hogehoge-devのインストールをしてみましょう。そのなかにhogehoge.aやhogehoge.soがある、ということはよくあることです。
ソースコードベースのディストリビューションや自分で設定したシステムの場合(LFS)
hogehoge.aをmakeしてパスの通ったディレクトリにおいて下さい。必要ならば、hogehoge-version.so(.a)へのシンボリックリンクをhogehoge.so(.a)に作成しておきましょう.
FreeBSD
これはソースコードベースのディストリビューションと同じく、makeしてやって-Fl/use/local/libをfpc.cfgに追加するか、追加して更にLazarusライブラリパスに配置します。 GTK1.2には「FreeBSDのパッケージ名としてのgtk12」があるのを覚えておいてください。 (glibと同じように)
NetBSD
これはソースコードベースのディストリビューションと同じく、makeしてやって-Fl/use/local/libをfpc.cfgに追加するか、追加して更にLazarusライブラリパスに配置します。

どうやってKylix2のプロジェクトをLazarusに変換して取り込めばいいでしょう

Kylixのプロジェクトの変換はDelphi/VCLプロジェクトの変換に似ています。

LCL(Lazarus Component Library)はDelphiのVCLと互換性を持つように作られています。 KylixのCLXはQTと互換性を持つように作られています。 一般的なヒントを以下に記します:

  • すべてのCLXが使うQ-ユニット——QForms,QControls,QGraphicsとか——をVCL風に変更してください。Forms,Control,Graphicsのように。
  • Formを使うソースコードのusesセクションにLResourcesを追加してください。
  • すべての.xfmファイルをコピーするかリネームして拡張子を.lfmにしてください。
  • すべての.dprファイルをコピーするかリネームして拡張子を.lprにしてください、
  • .lprファイルのinterfaceセクションに、Interfacesを追加してください。
  • {$R *.res}という記述を削除してください。
  • {$R *.xfm}という記述を削除してください。
  • .pasファイルと.lprファイルに{$mode objfpc}{$H+}か{$mode delphi}{$H+}という記述を追加してください。
  • Add an initialization section to the end of each form source and add an include directive for the .lrs file (lazarus resource file):
 initialization
   {$I unit1.lrs}
The .lrs files can be created via the lazres tool in: (lazarusdir)/tools/lazres.
For example: ./lazres unit1.lrs unit1.lfm
  • Fix the differences. The LCL does not yet support every property of the VCL and the CLX is not fully VCL compatible.

When compiling lazarus the compiler can not find a unit. e.g.: gtkint.pp(17,16) Fatal: Can't find unit GLIB

1. 完全にクリーンな状態してください: 'make clean all' を実行します

2. コンパイラのバージョンを確認してください(2.0.0 以上)

3. コンパイラが正しい設定ファイルを使用しているか確認してください。通常は /etc/fpc.cfg にインストールされます。しかし、fpc は ~/.ppc386.cfg や、~/.fpc.cfg、/etc/ppc386.cfg といったファイルを調べ、最初に見つけたものだけを使用します。 (~ はホームディレクトリを指します)

ヒント: 'ppc386 -vt bogus'とすることでコンフィグファイルを探すことが出来ます。
複数の ppc386.cfg を使用するのは古い方法ですので削除して下さい。

4. コンフィグファイル(/etc/fpc.cfg)の中で fpc のライブラリのパスが正しく設定されているか確認して下さい。fpc のライブラリパスの設定は次のように行います。

   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
最初の部分のパス(/usr/lib/fpc)は、あなたの環境に適合させて下さい。システムによっては、/usr/local/lib/fpc/...とった指定の仕方をする場合もあります。
ヒント: コマンドラインから'ppc386 -vt bogus'とすることでサーチパスを確認することが出来ます。

5. コンフィグファイル(/etc/fpc.cfg)の中で LCL のソースファイル(.pp、.pas)が正しく設定されているか確認して下さい:

 forbidden: -Fu(lazarus_source_directory)/lcl
 forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
もしあなたの fpc プロジェクトに LCL を付け加えたいなら、上述のfpc のライブラリのパスの後に、次の二つのパスを設置します。:
 -Fu(lazarus_source_directory)/lcl/units/$fpctarget
 -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk

6. 見つからないユニット(glib.ppu)が fpc ライブラリのディレクトリに存在しているか確認して下さい。例えば、gtk.ppu は /usr/lib/fpc/$version/units/i386-linux/gtk/ の中に見つけることができます。もしこれらが存在していないならば、fpc ライブラリは正常ではないので、再インストールして下さい。

7. ソースファイルが NFS でマウントされたディレクトリに置かれていないか確認して下さい。あるケースでは、NFS が作成したファイルを不正に更新していました。ソースを NFS ではないディレクトリに移動させて、コンパイルをして下さい。

I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can't find unit CONTROLS

Probably 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:

 $ bash
 $ svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus
 $ cd lazarus
 $ make clean all

Make sure that lazarus get the new source directory: Environment->General Options->Files->Lazarus Directory Top

Lazarusのコンパイルをして、リンク中にこんなことを言われます: libgdk-pixbuf not found

gdk-pixbufライブラリ(gkt1.x)をインストールするか使用しないようにします。

gdk-pixbufライブラリはこちらにあります:

RPMs: http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+...&system=&arch=

Debianパッケージ: libgdk-pixbuf-dev

ソースコード: ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/

Lazarusでしないように設定するには:"ツール"→"Lazarusのビルド設定"にオプションを追加します。 '-dNoGdkPixBufLib' もしくはコマンドラインで次のようにしてください。 "make clean all OPT=-dNoGdkPixBufLib".

SuSEを使っていますが、リンク時に/usr/bin/ld が Cannot find -lgtk Error というエラーを返します

SuSE は gtk の開発用ライブラリを /opt/gnome/lib (64bits 版の場合は /opt/gnome/lib64)にインストールします。このパスは標準的なものではありません。シンプルな解決方法は、/etc/fpc.cfg にこのパスを追加することです。 (-Fl/opt/gnome/lib).

Lazarus crashes with runtime error 211 after I installed a component

After I installed a component, Lazarus crashes with the following message:

Threading has been used before cthreads was initialized.
Make cthreads one of the first units in your uses clause.
Runtime error 211 at $0066E188

How can I fix this?

Your 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:

1) Change the source of ide/lazarus.pp: add the cthreads as first unit to the uses clause, so that is looks like this:

uses
  //cmem,
  cthreads, 
  {$IFDEF IDE_MEM_CHECK}
...

and rebuild lazarus.

2) 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.

Hint: Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.

When I run a program with threads I get runtime error 232

The complete error message is:

This binary has no thread support compiled in.
Recompile the application with a thread-driver in the program uses
clause before other units using thread.
Runtime error 232

Solution: Add cthreads as first unit to the uses clause of your main program, usually the .lpr-file.

I have Ubuntu Breezy and my fonts in Lazarus IDE look too big

If Lazarus is compiled with Gtk1.2, the settings in Gnome Preferences/Font don't have any effect as they are related to Gtk2. You could try this solution: Create a file named .gtkrc.mine in your home directory (if it's not already there) and add these lines to it:

style "default-text" {
       fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
                  -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
}

class "GtkWidget" style "default-text"

Ubuntuを使っています。ライブラリが見つからないために Gtk2 プログラムがコンパイルできません

Ubuntu には、インストールしたライブラリをリンク可能にするためのシンボリックリンクが、全てのライブラリで作成されるわけではないという問題があります。Gtk2 をリンクしようとした際に見つからないと指摘されたライブラリに、適切なシンボリックリンクがあるかどうか確認してください。例えば次のような方法があります:

cd /usr/lib
sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so

実際のライブラリ(上の例では libgdk-x11-2.0.so.0)に対し、[ライブラリ名].so (上の例では libgdk-x11-2.0.so)というリンク可能なシンボリックリンクが作られます。

どうすればGtk2プログラムをコンパイルすることが出来ますか?

今のところ、Gtk2 版 IDE は少し不安定(little unstable)です。ですが、Gtk1 版 IDE を使って Gtk2 のソフトウェアをコンパイルすることは可能です。

Gtk2 用の LCL でリコンパイルするには、メニューの“Tools”->“Configure Build Lazarus”から、LCL を clean+build に、everything else を none にセットします。

Ok ボタンをクリックし、“Tools”->“Build Lazarus”を選択します。

続いてコンパイラオプションに進み、Gtk2 用のウィジェットセットに変更することで、Gtk2 のソフトウェアをコンパイルできるようになります。

Windows

コンパイラを使っているときに、"The name specified is not recognized as an internal or external command, operable program or batch file.>& was unexpected at this time." というメッセージが出ることがあります。

コンパイラディレクトリに make.cmdというOS2用のscriptfileが存在しています。Windows-NTでは、それは必要ないのですが、NTがスクリプトファイルとみなしますので、取り除いてください。

コンパイルしているときに、"make[3]: ./ppc1.exe: Command not found"というメッセージが出ます。

どういう訳か、makeコマンドがパスを消失しています。basedirを次のようにセットしてください。

make cycle BASEDIR=your_fpc_source_dir_herecompiler

Lazarusをコンパイルしているときに受け取るメッセージ

make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2

makeファイルを更新する必要があります。

makefile:27: *** You need the GNU utils package to use this Makefile. Stop.

スペースがはいっているパスにFPCをインストールしていないかどうか、確認してください。スペースがはいっているパスを、Makefileはサポートしません。

どうしたらlazarusのように、自分が作ったプログラムをXP風の見栄えにできますか?

myprogram.exeというプログラムの場合は、myprogram.exe.manifestというファイルを作成し、次をコピーペーストしてください。


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>
<description>programom</description>
<dependency>
  <dependentAssembly>
   <assemblyIdentity
     type="win32"
     name="Microsoft.Windows.Common-Controls"
     version="6.0.0.0"
     publicKeyToken="6595b64144ccf1df"
     language="*"
     processorArchitecture="*" />
  </dependentAssembly>
  </dependency>
</assembly>

ほらね、XP風でしょ?

WindowsでLazarusで作ったプログラムを実行させるとDOS窓で開始してしまいます

コマンドラインのコンパイラを使っている場合は-WGオプション(=Windows GUI)を指定してください。 LazarusIDEの場合は、Project menu -> Compiler Options -> Linking -> target OS Specific optionsで、コンパイラオプションダイアログでWindows GUIをチェックしてください。

Contributors and Comments

This page has been converted from the epikwiki version.