SWI(1) User Commands SWI(1)
NAME
swipl-ld - Create a SWI-Prolog embedded executable
SYNOPSIS
swipl-ld options c-files o-files pl-filesDESCRIPTION
The utility
swipl-ld is a front-end for the C-compiler and linker to
create a stand-alone executable from a series of C/C++ and Prolog
input files. It extracts information from the SWI-Prolog executable
swipl, after which it scans the arguments and breaks them into
several categories. It then calls the C-compiler to create an
executable containing the user's C-code and the SWI-Prolog kernel.
After this, it will call the development environment to create a
Prolog saved state from the prolog files and finally it will create
the target executable by concatenating the state to the emulator.
See also
qsave_program/2 from the
SWI-Prolog manual. Options
-pl prolog Specifies the prolog version to use. The default is
swipl. This flag may be used to choose between different versions
installed on your system, or to specify a modified version. A
modified version should understands the flags
-dump-runtime-variables -f file -F file -g goal -t toplevel. -help Shows options briefly
-nostate Just relinks the kernel. The newly linked kernel can only
function in the presence of the development system. Any
supplied prolog sourcefiles are ignored, and so are the
options
-goal -toplevel -initfile. -class This is the
preferred way to attach external modules to Prolog if dynamic
loading is not supported on your system.
-c Compile C or C++ source-files into object files. This turns
swipl-ld into a replacement for the C or C++ compiler where
proper options such as the location of the include directory
are passed automatically to the compiler.
-E Invoke the C preprocessor. Used to make
swipl-ld a
replacement for the C or C++ compiler.
-shared Link C, C++ or object files into a shared object (DLL) that
can be loaded by the
load_foreign_library/1 predicate. If
used with
-c it sets the proper options to compile a C or C++
file ready for linking into a shared object.
-embed-shared Embed SWI-Prolog into a DLL/Shared object rather than an
executable. See the reference manual for details.
-dll Windows only Same as
-embed-shared Backward compatibility.
-F base By default,
none is passed to the swipl command to create the
saved state. Using
-F xpce you can specify loading
xpce.rc,
making XPCE available to the saved state.
-goal goal The goal that is initially executed when the toplevel is
started using
PL_toplevel(). E.i. the default.
-g flag for
the new executable.
-toplevel goal The goal that is executed as the main toplevel goal. E.i. the
default.
-t flag for the new executable.
-initfile file The file that is loaded by the toplevel. E.i. the default.
-f flag for the new executable.
-class {runtime,kernel,development} Set the save-class of the Prolog saved-state that is created.
If
runtime (default), the resulting system leave
interpretation of all arguments to the application. If
kernel all predicates will be locked for the tracer. Finally, if
development the state is saved `as-is' and the resulting
system processes options just as the basic SWI-Prolog
executable does. See also
qsave_program/2 in the
SWI-Prolog reference manual.
-v Verbose operation. This echos the commands before executing
them. Note that some commands are printed as shell commands,
but actually executed by swipl-ld itself for compatibility
with the Win32 platforms.
-f Fake operation. Together with
-v this prints the commands
that need to be executed without actually doing anything.
-Ecppargument ... If the first option is
-E, all subsequent options are appended
and handed to the program selected by SWI-Prolog configure to
run
cpp.
-o file Specifies the name of the final executable. The default is
a.out. -cc C-compiler Specify the compiler to use for
*.c files. Default is the
compiler used to compile SWI-Prolog itself, as read from the
feature
c_cc. -c++ C++-compiler Specify the compiler to use for C++ input files. If the C-
compiler is
gcc this is
g++, otherwise
c++ is assumed.
-ld linker Specifies the linker to use. Default is the C-compiler. On
Win32 platforms, the default is
link.exe. -llibrary Specifies a C-library for linking the application. By
default,
-lswipl as well as the libraries required by the SWI-
Prolog kernel will be passed to the C-compiler.
-Llibrary-directory Specifies an additional library directory for the C-compiler.
By default, the runtime directory for the current architecture
is passed.
-g|-I*|-D*|-U*|-O*|-W* Passed to the compiler as c-flags. By default, the SWI-Prolog
include directory is passed as additional include directory.
The following -D flags are added by swipl-ld: -D__SWI_PROLOG__
and -D__SWI_EMBEDDED__.
-pl-options* Specify additional options for
swipl. The first character
following
-pl-options determines the option-separator. The
remainder of the argument is split using this separator and
the parts are added to the option list for Prolog. See also
-cc-options and -ld-options -ld-options* Additional options passed to the linker. For example:
-ld-options,-Bstatic -cc-options* Additional options passed to both C- and C++-compiler.
*.o Passed as input files to the linker.
*.c Compiled using the C-compiler, after which the object-file is
passed to the linker. The object file is deleted at cleanup.
*.cc|*.C|*.cxx|*.cpp Compiled using the C++-compiler, after which the object-file
is passed to the linker. The object file is deleted at
cleanup.
*.pl|*.qlf Passed as Prolog input files
BUGS
Parsing the options and distributing them over the various programs
is probably incomplete. Feel free to modify it and please forward
generally useful modifications to
bugs@swi-prolog.org. Some care has to be taken that the state created with
qsave_program/2 is self-contained (i.e. contains no references to the Prolog
libraries). Also, as the state is created using the development
environment rather then the user's emulator, the Prolog code cannot
use directives that rely on the C-code added by the user.
SEE ALSO
swipl(1) SWI-Prolog Reference Manual, http://www.swi-prolog.orgCOPYRIGHT
Copyright (C) 1991-2010, University of Amsterdam, VU University,
Amsterdam This program may be used under the terms of the LGPL,
version 2 or later.
AUTHOR
Jan Wielemaker
February 8, 2006 SWI(1)