Viacheslav Kovalev
Viacheslav Kovalev

Reputation: 1745

erl_interface linker error

I need to use erl_interface in my C-program. There is Erlang R15B01 on Debian Wheezy.

I just do the following (for example).

// main.c
#include <ei.h>
#include <erl_interface.h>

int main() {
    erl_init(NULL,0);
    return 0;
}

Then i say:

cc -I/usr/lib/erlang/lib/erl_interface-3.7.7/include -L/usr/lib/erlang/lib/erl_interface-3.7.7/ -lei -lerl_interface -o prog main.c

Directory specified as -L contains libei.a and liberl_interface.a but linker abusing that reference to erl_init is undefined: undefined reference to erl_init

What may be wrong? Sorry for really stupid question.

Upvotes: 1

Views: 1300

Answers (1)

user529758
user529758

Reputation:

Newest versions of the GNU toolchain require that the object files and libraries be specified in the same order their symbols depend on each other. So you should generally put the library flags to the end of the invocation, like this:

gcc -o prog main.c -L<libdir> -I<includedir> -lerl_interface -lei

Upvotes: 2

Related Questions