Sudipto Mallick:
> When I compiled a recent version of tinycc from mob, I
> looked at the source of the manpage. I don't like it.
What did not you like?
> I learnt about the mdoc(7) format for writing man pages
> and thought to use that format for the tcc man page. The
> rewrite is attached.
The processed result is attached. While processing, GNU
Troff reported the following warnings:
mdoc warning: A .Bl directive has no matching .El (#287)
mdoc warning: Empty input line #376
mdoc warning: Empty input line #387
mdoc warning: Empty input line #392
mdoc warning: Empty input line #394
mdoc warning: Empty input line #409
> What do you think about this mdoc formatted manual page?
I disike lines longer than 78 characters and lack of
vertical spacing between logical sections. You can do them
like this:
end of previous secgtion
.
.Sh SYNOPSIS
.
text text text.
> Please give suggestion to complete it.
I personally prefer the original -man package to -mdoc...
TCC(1) BSD General Commands Manual TCC(1)
NAME
tcc -- Tiny C Compiler
SYNOPSIS
tcc [options] [infile1 infile2 ...] [-run infile args ...]
DESCRIPTION
Tiny C Compiler is a lightweight and fast C compiler. Unlike other C
compilers, it can run programs directly from memory without generating
executable files, almost like scripting languages! tcc runs on Linux,
Windows, macOS, FreeBSD, NetBSD and OpenBSD operating systems. tcc can
compile C code for i386, x86_64, arm, arm64 and riscv64 architectures.
OPTIONS
General options
-c Generate an object file.
-o outfile
Put object file, executable, or dll into output file outfile.
-run source [args ...]
Compile file source and run it with the command line arguments
args. In order to be able to give more than one argument to a
script, several tcc options can be given after the -run option,
separated by spaces:
tcc "-run -L/usr/X11R6/lib -lX11" ex4.c
In a script, it gives the following header:
#!/usr/local/bin/tcc -run -L/usr/X11R6/lib -lX11
-v Display TCC version.
-vv Show included files. As sole argument, print search dirs. -vvv
shows too.
-bench Display compilation statistics.
Preprocessor options
-Idir Specify an additional include path. Include paths are searched in
the order they are specified.
System include paths are always searched after. The default sys-
tem include paths are: /usr/local/include, /usr/include and
PREFIX/lib/tcc/include. (PREFIX is usually /usr or /usr/local).
-Dsym[=val]
Define preprocessor symbol `sym' to `val'. If `val' is not pre-
sent, its value is `1'. Function-like macros can also be
defined: `-DF(a)=a+1'
-Usym Undefine preprocessor symbol `sym'.
-E Preprocess only, to stdout or file (with -o).
Compilation flags
Note: each of the following options has a negative form beginning with
-fno-.
-funsigned-char
Let the char type be unsigned.
-fsigned-char
Let the char type be signed.
-fno-common
Do not generate common symbols for uninitialized data.
-fleading-underscore
Add a leading underscore at the beginning of each C symbol.
-fms-extensions
Allow a MS C compiler extensions to the language. Currently this
assumes a nested named structure declaration without an identi-
fier behaves like an unnamed one.
-fdollars-in-identifiers
Allow dollar signs in identifiers.
Warning options
-w Disable all warnings.
Note: each of the following warning options has a negative form beginning
with -Wno-.
-Wimplicit-function-declaration
Warn about implicit function declaration.
-Wunsupported
Warn about unsupported GCC features that are ignored by TCC.
-Wwrite-strings
Make string constants be of type const char * instead of char *.
-Werror
Abort compilation if warnings are issued.
-Wall Activate all warnings, except -Werror, -Wunusupported and
-Wwrite-strings.
Linker options
-Ldir Specify an additional static library path for the -l option. The
default library paths are /usr/local/lib, /usr/lib and /lib.
-lname Link your program with dynamic library libname.so or static
library libname.a. The library is searched in the paths speci-
fied by the -L option and LIBRARY_PATH variable.
-Bdir Set the path where the tcc internal libraries (and include files)
can be found (default is PREFIX/lib/tcc).
-shared
Generate a shared library instead of an executable.
-soname name
set name for shared library to be used at runtime.
-static
Generate a statically linked executable (default is a shared
linked executable).
-rdynamic
Export global symbols to the dynamic linker. It is useful when a
library opened with dlopen(3) needs to access executable symbols.
-r Generate an object file combining all input files.
-Wl,-rpath=path
Put custom search path for dynamic libraries into executable.
-Wl,--enable-new-dtags
When putting a custom search path for dynamic libraries into the
executable, create the new ELF dynamic tag DT_RUNPATH instead of
the old legacy DT_RPATH.
-Wl,--oformat=fmt
Use fmt as output format. The supported output formats are:
elf32-i386
ELF output format (default)
binary Binary image (only for executable output)
coff COFF output format (only for executable output for
TMS320C67xx target)
-Wl,--export-all-symbols
-Wl,--export-dynamic
Export global symbols to the dynamic linker. It is useful when a
library opened with dlopen(3) needs to access executable symbols.
-Wl,-subsystem=console/gui/wince/...
Set type for PE (Windows) executables.
-Wl,-T[text=# | section-alignment=# | file-alignment=# | image-base=# |
stack=#]
Modify executable layout.
-Wl,-Bsymbolic
Set DT_SYMBOLIC tag.
-Wl,-[no-]whole-archive
Turn on/off linking of all objects in archives.
Debugger options
-g Generate run time debug information so that you get clear run
time error messages:
test.c:68: in function 'test5()': dereferencing invalid
pointer
instead of the laconic `Segmentation fault'.
-b Generate additional support code to check memory allocations and
array/pointer bounds. -g is implied.
-bt[N] Display N callers in stack traces. This is useful with -g or -b.
With executables, additional support for stack traces is
included.
A function int tcc_backtrace(const char *fmt, ...) is provided
to trigger a stack trace with a message on demand.
Miscellanious options
-MD Generate makefile fragment with dependencies.
-MF depfile
Use depfile as output for -MD.
-print-search-dirs
Print the configured installation directory and a list of library
and include directories tcc will search.
-dumpversion
Print version.
Target specific options
-mms-bitfields
Use an algorithm for bitfield alignment consistent with MSVC.
Default is gcc(1)'s algorithm.
-mfloat-abi (ARM only)
Select the float ABI. Possible values: softfp and hard.
-mno-sse
Do not use sse registers on x86_64
-m32, -m64
Pass command line to the i386/x86_64 cross compiler.
Note: gcc(1) options -Ox, -fx and -mx are ignored.
ENVIRONMENT
Environment variables that affect how tcc operates.
CPATH
C_INCLUDE_PATH
A colon-separated list of directories searched for include files,
directories given with -I are searched first.
LIBRARY_PATH
A colon-separated list of directories searched for libraries for
the -l option, directories given with -L are searched first.
EXAMPLES
Compile a.c and execute it directly:
tcc -run a.c
Compile a.c and execute it directly. arg1 is given as first argument to
the `main()' of a.c.
tcc -run a.c arg1
Compile a.c and b.c, link them together and execute them. arg1 is given
as first argument to the `main()' of the resulting program.
tcc a.c -run b.c arg1
Compile a.c and b.c, link them and generate the executable myprog.
tcc -o myprog a.c b.c
Link a.o and b.o together and generate the executable myprog.
tcc -o myprog a.o b.o
Compile a.c and generate object file a.o.
tcc -c a.c
Preprocess with C preprocess and assemble asmfile.S and generate object
file asmfile.o.
tcc -c asmfile.S
Assemble (but not preprocess) asmfile.s and generate object file
asmfile.o.
tcc -c asmfile.s
Compile a.c and b.c, link them together and generate the object file
ab.o.
tcc -r -o ab.o a.c b.c
Scripting
tcc can be invoked from scripts, just as shell scripts. You just need to
add `#!/usr/local/bin/tcc -run' at the start of your C source:
#!/usr/local/bin/tcc -run
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
tcc can read C source code from standard input. Use - in the place of
input file names. For example::
echo 'main(){puts("hello");}' | tcc -run -
EXIT STATUS
The tcc utility exits 0 on success, and >0 if an error occurs.
SEE ALSO
cc(1), cpp(1), dlopen(3), elf(5), gcc(1), ld(1).
AUTHORS
Fabrice Bellard
BSD December 25, 2020 BSD
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel