<div dir="ltr">I figure out my problem. I wasn't putting a -l<libname> in the link line, so of course it didn't know which library to lookup. Idiotic.<br>Thanks for the help everyone. The tip about running ldd got me thinking. Thanks.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 15, 2015 at 9:30 AM, Diptansu Das <span dir="ltr"><<a href="mailto:diptansu@gmail.com" target="_blank">diptansu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"> I used the erl_ddll:format_error/1 and that said that one of the functions (foo) was undefined. The function doo is actually in another .so file in the same directory (lets call that foo.so). Weirdly, when I run ldd on my driver.so it does not show any dependency on this foo.so . I am compiling the driver by using:<br> g++ -o simple_drv.so -i$ERL_TOP/erts/emulator/beam -fpic -shared simple_drv.cpp<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 15, 2015 at 3:41 AM, Sergej Jurečko <span dir="ltr"><<a href="mailto:sergej.jurecko@gmail.com" target="_blank">sergej.jurecko@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>To check shared library paths that your driver is looking for:<br><br></div>Linux: ldd your_driver.so<br></div>Osx: otool -L your_driver.so<br><br></div><br></div>Sergej<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Fri, May 15, 2015 at 4:57 AM, Diptansu Das <span dir="ltr"><<a href="mailto:diptansu@gmail.com" target="_blank">diptansu@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">I need to create a port driver which will need to link against some other shared library. When I try to load the driver I get an {error, {open_error, -10}}. I tracked this down to the call to the shared library functions. If I comment out the calls to the shared library it loads fine. It seems the erl_ddll loader cannot load a driver if it links to a shared library... Or maybe there is some other way to accomplish this? <br>In case I cannot create a normal dynamically loaded port driver, how can I statically link it to the erlang build?<br>Thanks,<br>D</div>
<br></div></div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>