digitalmars.D.learn - [Ubuntu] Linking to static libraries
There's a small C graphics library called GP142, which I am
trying to port to D on Linux (Ubuntu).
So I compiled the library in gcc, and that gave me the file
gp142.o which I must link together with my D source file.
My code is very simple. I declare the two simplest functions in
GP142, and try to call them. If it works, I will do the same for
all the other functions :)
However, GP142 must be linked with the Xlib library in order to
work.
When compiling as a C program, I would say something like: [gcc
test.c gp142.o -o test -lX11] and it would work.
How can do this with dmd? (Note that X11 is somewhere in the
system, not in my project folder - gcc manages to find though).
This my code:
import std.stdio;
extern (C) int GP142_open();
extern (C) void GP142_close();
void main()
{
// initialize GP142
GP142_open();
// close GP142
GP142_close();
writeln("Works");
}
Mar 28 2012
On Wed, 28 Mar 2012 12:05:59 +0200, Minas <minas_mina1990 hotmail.co.uk>
wrote:
There's a small C graphics library called GP142, which I am trying to
port to D on Linux (Ubuntu).
So I compiled the library in gcc, and that gave me the file gp142.o
which I must link together with my D source file.
My code is very simple. I declare the two simplest functions in GP142,
and try to call them. If it works, I will do the same for all the other
functions :)
However, GP142 must be linked with the Xlib library in order to work.
When compiling as a C program, I would say something like: [gcc test.c
gp142.o -o test -lX11] and it would work.
How can do this with dmd? (Note that X11 is somewhere in the system, not
in my project folder - gcc manages to find though).
This my code:
import std.stdio;
extern (C) int GP142_open();
extern (C) void GP142_close();
void main()
{
// initialize GP142
GP142_open();
// close GP142
GP142_close();
writeln("Works");
}
To pass -lX11 to the linker, dmd has the -L flag.
"dmd -L-lX11" will pass "-lX11" to the linker.
Mar 28 2012








simendsjo <simendsjo gmail.com>