mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-26 03:50:07 +08:00
win32: readme.txt->tcc-win32.txt, update tcc-doc
This commit is contained in:
parent
eca1fbaf92
commit
e8a52a8249
2
Makefile
2
Makefile
@ -268,7 +268,7 @@ endif
|
|||||||
mkdir -p "$(DESTDIR)$(docdir)"
|
mkdir -p "$(DESTDIR)$(docdir)"
|
||||||
$(INSTALL) -m644 tcc-doc.html "$(DESTDIR)$(docdir)"
|
$(INSTALL) -m644 tcc-doc.html "$(DESTDIR)$(docdir)"
|
||||||
ifdef CONFIG_WIN32
|
ifdef CONFIG_WIN32
|
||||||
$(INSTALL) -m644 win32/readme.txt "$(DESTDIR)$(docdir)"
|
$(INSTALL) -m644 win32/tcc-win32.txt "$(DESTDIR)$(docdir)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
5
README
5
README
@ -28,7 +28,7 @@ Features:
|
|||||||
Documentation:
|
Documentation:
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
1) Installation on a i386 Linux host (for Windows read win32/readme.txt)
|
1) Installation on a i386 Linux host (for Windows read tcc-win32.txt)
|
||||||
|
|
||||||
./configure
|
./configure
|
||||||
make
|
make
|
||||||
@ -79,8 +79,7 @@ when doing 'make test'.
|
|||||||
|
|
||||||
Please read tcc-doc.html to have all the features of TCC.
|
Please read tcc-doc.html to have all the features of TCC.
|
||||||
|
|
||||||
Additional information is available for the Windows port in
|
Additional information is available for the Windows port in tcc-win32.txt.
|
||||||
win32/readme.txt.
|
|
||||||
|
|
||||||
License:
|
License:
|
||||||
-------
|
-------
|
||||||
|
34
tcc-doc.texi
34
tcc-doc.texi
@ -16,11 +16,8 @@
|
|||||||
@headings double
|
@headings double
|
||||||
@end iftex
|
@end iftex
|
||||||
|
|
||||||
@c @ifhtml
|
|
||||||
@contents
|
@contents
|
||||||
@c @end ifhtml
|
|
||||||
|
|
||||||
@ifnothtml
|
|
||||||
@node Top, Introduction, (dir), (dir)
|
@node Top, Introduction, (dir), (dir)
|
||||||
@top Tiny C Compiler Reference Documentation
|
@top Tiny C Compiler Reference Documentation
|
||||||
|
|
||||||
@ -29,10 +26,14 @@ This manual documents version @value{VERSION} of the Tiny C Compiler.
|
|||||||
@menu
|
@menu
|
||||||
* Introduction:: Introduction to tcc.
|
* Introduction:: Introduction to tcc.
|
||||||
* Invoke:: Invocation of tcc (command line, options).
|
* Invoke:: Invocation of tcc (command line, options).
|
||||||
|
* Clang:: ANSI C and extensions.
|
||||||
|
* asm:: Assembler syntax.
|
||||||
|
* linker:: Output file generation and supported targets.
|
||||||
* Bounds:: Automatic bounds-checking of C code.
|
* Bounds:: Automatic bounds-checking of C code.
|
||||||
* Libtcc:: The libtcc library.
|
* Libtcc:: The libtcc library.
|
||||||
|
* devel:: Guide for Developers.
|
||||||
@end menu
|
@end menu
|
||||||
@end ifnothtml
|
|
||||||
|
|
||||||
@node Introduction
|
@node Introduction
|
||||||
@chapter Introduction
|
@chapter Introduction
|
||||||
@ -42,7 +43,7 @@ compilers, it is meant to be self-relying: you do not need an
|
|||||||
external assembler or linker because TCC does that for you.
|
external assembler or linker because TCC does that for you.
|
||||||
|
|
||||||
TCC compiles so @emph{fast} that even for big projects @code{Makefile}s may
|
TCC compiles so @emph{fast} that even for big projects @code{Makefile}s may
|
||||||
not be necessary.
|
not be necessary.
|
||||||
|
|
||||||
TCC not only supports ANSI C, but also most of the new ISO C99
|
TCC not only supports ANSI C, but also most of the new ISO C99
|
||||||
standard and many GNUC extensions including inline assembly.
|
standard and many GNUC extensions including inline assembly.
|
||||||
@ -63,11 +64,11 @@ ports for the ARM (@code{arm-tcc}) and the TMS320C67xx targets
|
|||||||
(@code{c67-tcc}). More information about the ARM port is available at
|
(@code{c67-tcc}). More information about the ARM port is available at
|
||||||
@url{http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html}.
|
@url{http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html}.
|
||||||
|
|
||||||
|
For usage on Windows, see also tcc-win32.txt.
|
||||||
|
|
||||||
@node Invoke
|
@node Invoke
|
||||||
@chapter Command line invocation
|
@chapter Command line invocation
|
||||||
|
|
||||||
[This manual documents version @value{VERSION} of the Tiny C Compiler]
|
|
||||||
|
|
||||||
@section Quick start
|
@section Quick start
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@ -142,7 +143,7 @@ TCC can read C source code from @emph{standard input} when @option{-} is used in
|
|||||||
place of @option{infile}. Example:
|
place of @option{infile}. Example:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
echo 'main(){puts("hello");}' | tcc -run -
|
echo 'main()@{puts("hello");@}' | tcc -run -
|
||||||
@end example
|
@end example
|
||||||
@c man end
|
@c man end
|
||||||
|
|
||||||
@ -346,6 +347,7 @@ Fabrice Bellard
|
|||||||
|
|
||||||
@end ignore
|
@end ignore
|
||||||
|
|
||||||
|
@node Clang
|
||||||
@chapter C language support
|
@chapter C language support
|
||||||
|
|
||||||
@section ANSI C
|
@section ANSI C
|
||||||
@ -577,6 +579,7 @@ indicate that you use TCC.
|
|||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@node asm
|
||||||
@chapter TinyCC Assembler
|
@chapter TinyCC Assembler
|
||||||
|
|
||||||
Since version 0.9.16, TinyCC integrates its own assembler. TinyCC
|
Since version 0.9.16, TinyCC integrates its own assembler. TinyCC
|
||||||
@ -706,6 +709,7 @@ tries to guess it from the operand sizes.
|
|||||||
|
|
||||||
Currently, MMX opcodes are supported but not SSE ones.
|
Currently, MMX opcodes are supported but not SSE ones.
|
||||||
|
|
||||||
|
@node linker
|
||||||
@chapter TinyCC Linker
|
@chapter TinyCC Linker
|
||||||
@cindex linker
|
@cindex linker
|
||||||
|
|
||||||
@ -733,17 +737,10 @@ libraries (.so).
|
|||||||
@section PE-i386 file generation
|
@section PE-i386 file generation
|
||||||
@cindex PE-i386
|
@cindex PE-i386
|
||||||
|
|
||||||
TCC for Windows supports the native Win32 executable file format (PE-i386). It
|
TCC for Windows supports the native Win32 executable file format (PE-i386). It
|
||||||
generates both EXE and DLL files. DLL symbols can be imported thru DEF files
|
generates EXE files (console and gui) and DLL files.
|
||||||
generated with the @code{tiny_impdef} tool.
|
|
||||||
|
|
||||||
On the object file level, currently TCC supports only the ELF format, not COFF
|
For usage on Windows, see also tcc-win32.txt.
|
||||||
as used by MINGW and MSVC. It is not possible to exchange object files or
|
|
||||||
libraries between TCC and these compilers. However libraries for TCC from objects
|
|
||||||
by TCC can be made using the @code{tiny_libmaker} tool or MINGW's @code{ar}.
|
|
||||||
|
|
||||||
No leading underscore is generated in the ELF symbols. Only functions (no
|
|
||||||
data) can be exported. Bounds checking (@option{-b}) is not supported currently.
|
|
||||||
|
|
||||||
@section GNU Linker Scripts
|
@section GNU Linker Scripts
|
||||||
@cindex scripts, linker
|
@cindex scripts, linker
|
||||||
@ -854,6 +851,7 @@ The idea consists in giving a C string containing the program you want
|
|||||||
to compile directly to @code{libtcc}. Then you can access to any global
|
to compile directly to @code{libtcc}. Then you can access to any global
|
||||||
symbol (function or variable) defined.
|
symbol (function or variable) defined.
|
||||||
|
|
||||||
|
@node devel
|
||||||
@chapter Developer's guide
|
@chapter Developer's guide
|
||||||
|
|
||||||
This chapter gives some hints to understand how TCC works. You can skip
|
This chapter gives some hints to understand how TCC works. You can skip
|
||||||
|
114
win32/readme.txt
114
win32/readme.txt
@ -1,114 +0,0 @@
|
|||||||
|
|
||||||
TinyCC
|
|
||||||
======
|
|
||||||
|
|
||||||
This file contains some additional information for usage of TinyCC
|
|
||||||
under MS-Windows:
|
|
||||||
|
|
||||||
|
|
||||||
Overview:
|
|
||||||
---------
|
|
||||||
TinyCC (aka TCC) is a small but hyperfast C compiler, written by
|
|
||||||
Fabrice Bellard.
|
|
||||||
|
|
||||||
TinyCC for MS-Windows can produce console applications, native
|
|
||||||
windows GUI programs and DLL's.
|
|
||||||
|
|
||||||
The package with under 300kb includes a complete C-compiler with
|
|
||||||
header files and basic system library support.
|
|
||||||
|
|
||||||
With the -run switch you can run C-sources without any linking
|
|
||||||
directly from the command line.
|
|
||||||
|
|
||||||
TinyCC can be used as dynamic code generator library in your own
|
|
||||||
program.
|
|
||||||
|
|
||||||
TinyCC can of course compile itself.
|
|
||||||
|
|
||||||
|
|
||||||
Compilation: (omit that if you use the binary ZIP package)
|
|
||||||
------------
|
|
||||||
You can use the MinGW and MSYS tools available at
|
|
||||||
http://www.mingw.org to compile TCC for Windows. Untar the TCC
|
|
||||||
archive and type in the MSYS shell:
|
|
||||||
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
TCC is installed in c:\Program Files\tcc
|
|
||||||
|
|
||||||
Alternatively you can use win32\build-tcc.bat to compile TCC
|
|
||||||
with just gcc and ar from MINGW. To install, copy the entire
|
|
||||||
contents of the win32 directory to where you want.
|
|
||||||
|
|
||||||
|
|
||||||
Installation: (from the binary ZIP package)
|
|
||||||
-------------
|
|
||||||
Just unzip the package to a directory anywhere on your computer.
|
|
||||||
|
|
||||||
The binary package does not include libtcc. If you want tcc as
|
|
||||||
dynamic code generator, please use the source code distribution.
|
|
||||||
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
---------
|
|
||||||
For the 'Fibonacci' console example type from the command line:
|
|
||||||
|
|
||||||
tcc examples\fib.c
|
|
||||||
|
|
||||||
For the 'Hello Windows' GUI example:
|
|
||||||
|
|
||||||
tcc examples\hello_win.c
|
|
||||||
|
|
||||||
For the 'Hello DLL' example:
|
|
||||||
|
|
||||||
tcc -shared examples\dll.c
|
|
||||||
tcc examples\hello_dll.c examples\dll.def
|
|
||||||
|
|
||||||
|
|
||||||
Import Definition Files:
|
|
||||||
------------------------
|
|
||||||
To link with Windows system DLLs, TinyCC uses import definition
|
|
||||||
files (.def) instead of libraries.
|
|
||||||
|
|
||||||
The included 'tiny_impdef' program may be used to make additional
|
|
||||||
.def files for any DLL. For example:
|
|
||||||
|
|
||||||
tiny_impdef.exe opengl32.dll
|
|
||||||
|
|
||||||
To use it, put the opengl32.def file into the tcc/lib directory,
|
|
||||||
and specify -lopengl32 at the tcc commandline.
|
|
||||||
|
|
||||||
|
|
||||||
Resource Files:
|
|
||||||
---------------
|
|
||||||
TinyCC-PE can now link windows resources in coff format as generated
|
|
||||||
by MINGW's windres.exe. For example:
|
|
||||||
|
|
||||||
windres -O coff app.rc -o appres.o
|
|
||||||
tcc app.c appres.o -o app.exe
|
|
||||||
|
|
||||||
|
|
||||||
Tiny Libmaker:
|
|
||||||
--------------
|
|
||||||
The included tiny_libmaker tool by Timovj Lahde can be used as
|
|
||||||
'ar' replacement to make a library from several object files.
|
|
||||||
|
|
||||||
|
|
||||||
Header Files:
|
|
||||||
-------------
|
|
||||||
The system header files (except _mingw.h) are from the mingw
|
|
||||||
distribution (http://www.mingw.org/).
|
|
||||||
|
|
||||||
|
|
||||||
Documentation and License:
|
|
||||||
--------------------------
|
|
||||||
TCC is distributed under the GNU Lesser General Public License
|
|
||||||
(see COPYING file).
|
|
||||||
|
|
||||||
Please read tcc-doc.html to have all the features of TCC. Also
|
|
||||||
visit: http://fabrice.bellard.free.fr/tcc/
|
|
||||||
|
|
||||||
|
|
||||||
-- grischka@users.sourceforge.net
|
|
158
win32/tcc-win32.txt
Normal file
158
win32/tcc-win32.txt
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
|
||||||
|
TinyCC
|
||||||
|
======
|
||||||
|
|
||||||
|
This file contains specific information for usage of TinyCC
|
||||||
|
under MS-Windows. See tcc-doc.html to have all the features.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Compilation from source:
|
||||||
|
------------------------
|
||||||
|
* You can use the MinGW and MSYS tools available at
|
||||||
|
|
||||||
|
http://www.mingw.org
|
||||||
|
|
||||||
|
Untar the TCC archive and type in the MSYS shell:
|
||||||
|
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
The default install location is c:\Program Files\tcc
|
||||||
|
|
||||||
|
|
||||||
|
* Alternatively you can compile TCC with just GCC from MinGW using
|
||||||
|
|
||||||
|
win32\build-tcc.bat
|
||||||
|
|
||||||
|
To install, copy the entire contents of the win32 directory to
|
||||||
|
where you want.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Installation from the binary ZIP package:
|
||||||
|
-----------------------------------------
|
||||||
|
Unzip the package to a directory of your choice.
|
||||||
|
|
||||||
|
(Note that the binary package does not include libtcc. If you
|
||||||
|
want TCC as dynamic code generator, please use the source code
|
||||||
|
distribution.)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Set the system PATH:
|
||||||
|
--------------------
|
||||||
|
To be able to invoke the compiler from everywhere on your computer by
|
||||||
|
just typing "tcc", please add the directory containing tcc.exe to your
|
||||||
|
system PATH.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
---------
|
||||||
|
Open a console window (DOS box) and 'cd' to the examples directory.
|
||||||
|
|
||||||
|
For the 'Fibonacci' example type:
|
||||||
|
|
||||||
|
tcc fib.c
|
||||||
|
|
||||||
|
For the 'Hello Windows' GUI example type:
|
||||||
|
|
||||||
|
tcc hello_win.c
|
||||||
|
|
||||||
|
for the 'Hello DLL' example type
|
||||||
|
|
||||||
|
tcc -shared dll.c
|
||||||
|
tiny_impdef dll.dll (optional)
|
||||||
|
tcc hello_dll.c dll.def
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Import Definition Files:
|
||||||
|
------------------------
|
||||||
|
To link with Windows system DLLs, TCC uses import definition
|
||||||
|
files (.def) instead of libraries.
|
||||||
|
|
||||||
|
The included 'tiny_impdef' program may be used to make additional
|
||||||
|
.def files for any DLL. For example:
|
||||||
|
|
||||||
|
tiny_impdef.exe opengl32.dll
|
||||||
|
|
||||||
|
Put opengl32.def into the tcc/lib directory. Specify -lopengl32 at
|
||||||
|
the TCC commandline to link a program that uses opengl32.dll.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Header Files:
|
||||||
|
-------------
|
||||||
|
The system header files (except _mingw.h) are from the MinGW
|
||||||
|
distribution:
|
||||||
|
|
||||||
|
http://www.mingw.org/
|
||||||
|
|
||||||
|
From the windows headers, only a minimal set is included. If you need
|
||||||
|
more, get MinGW's "w32api" package.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Resource Files:
|
||||||
|
---------------
|
||||||
|
TCC can link windows resources in coff format as generated by MinGW's
|
||||||
|
windres.exe. For example:
|
||||||
|
|
||||||
|
windres -O coff app.rc -o appres.o
|
||||||
|
tcc app.c appres.o -o app.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tiny Libmaker:
|
||||||
|
--------------
|
||||||
|
The included tiny_libmaker tool by Timovj Lahde can be used as
|
||||||
|
'ar' replacement to make a library from several object files:
|
||||||
|
|
||||||
|
tiny_libmaker [rcs] library objectfiles ...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Limitations:
|
||||||
|
------------
|
||||||
|
- On the object file level, currently TCC supports only the ELF format,
|
||||||
|
not COFF as used by MinGW and MSVC. It is not possible to exchange
|
||||||
|
object files or libraries between TCC and these compilers. However
|
||||||
|
libraries for TCC from objects by TCC can be made using tiny_libmaker
|
||||||
|
or MinGW's ar.
|
||||||
|
|
||||||
|
- No leading underscore is generated in the ELF symbols.
|
||||||
|
|
||||||
|
- With DLLs, only functions (not data) can be im-/exported.
|
||||||
|
|
||||||
|
- Bounds checking (option -b) is not supported currently.
|
||||||
|
|
||||||
|
- 64-bit systems are not (yet) supported.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Documentation and License:
|
||||||
|
--------------------------
|
||||||
|
TCC is distributed under the GNU Lesser General Public License. (See
|
||||||
|
COPYING file or http://www.gnu.org/licenses/lgpl-2.1.html)
|
||||||
|
|
||||||
|
TinyCC homepage is at:
|
||||||
|
|
||||||
|
http://fabrice.bellard.free.fr/tcc/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WinAPI Help and 3rd-party tools:
|
||||||
|
--------------------------------
|
||||||
|
The Windows API documentation (Win95) in a single .hlp file is
|
||||||
|
available on the lcc-win32 site as "win32hlp.exe" or from other
|
||||||
|
locations as "win32hlp_big.zip".
|
||||||
|
|
||||||
|
A nice RAD tool to create windows resources (dialog boxes etc.) is
|
||||||
|
"ResEd", available at the RadASM website.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- grischka
|
Loading…
Reference in New Issue
Block a user