小编Bri*_*fin的帖子

GnuCOBOL无法找到动态符号,仅在最近的Ubuntu上

我想,最近发生了一些变化.

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)

ubuntu gcc cobol ld gnucobol

9
推荐指数
2
解决办法
1533
查看次数

标签 统计

cobol ×1

gcc ×1

gnucobol ×1

ld ×1

ubuntu ×1