我想,最近发生了一些变化.
GnuCOBOL依赖于动态链接,在运行时使用dlsym查找符号.这个CALL运行时支持代码已经在OpenCOBOL中使用了大约7年.它不再适用于Ubuntu 14.04,但在Fedora 19/20下运行.
ldd不再显示使用-l列出的任何库
例如,作为测试,Ubuntu 14.04.1
以下COBOL计划
identification division.
program-id. simple.
procedure division.
call "gtk_init" using
by value 0
by reference null
returning omitted
end-call
goback.
end program simple.
$ cobc -x -v -lgtk-3 simple.cob
preprocessing simple.cob into /tmp/cob710_0.cob
parsing /tmp/cob710_0.cob (simple.cob)
Return status: 0
translating /tmp/cob710_0.cob into /tmp/cob710_0.c (simple.cob)
gcc -pipe -c -I/usr/local/include -Wno-unused -fsigned-char -Wno-pointer-sign -o "/tmp/cob710_0.o" "/tmp/cob710_0.c"
gcc -pipe -Wl,--export-dynamic -o simple /tmp/cob710_0.o -L/usr/local/lib -lcob -lm -lgmp -lncurses -ldb -ldl -l"gtk-3"
Run Code Online (Sandbox Code Playgroud)
二进制没有指示libgtk-3.so在混合中.
./simple
libcob: Cannot find …Run Code Online (Sandbox Code Playgroud)