2014-10-07 9 views
10

हाल ही में कुछ बदल गया, मुझे लगता है।GnuCOBOL गतिशील प्रतीकों को खोजने में असफल रहा, केवल हाल ही में उबंटू

GnuCOBOL गतिशील लिंकिंग पर निर्भर करता है, प्रतीकों को रन-टाइम पर dlsym के साथ देखा जाता है। यह कॉल रन-टाइम समर्थन कोड अब 7 साल से ओपनकोबोल में रहा है। यह अब उबंटू 14.04 पर काम नहीं करता है, लेकिन फेडोरा 1 9/20 के तहत करता है।

ldd दिखाई नहीं देता है किसी भी लाइब्रेरी -l

एक परीक्षण के रूप उदाहरण के लिए का उपयोग कर सूचीबद्ध, Ubuntu 14.04.1

निम्नलिखित कोबोल कार्यक्रम

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" 

द्विआधारी कोई संकेत नहीं है कि libgtk है -3.so मिश्रण में है।

./simple 
libcob: Cannot find module 'gtk_init' 

$ ldd simple 
    linux-vdso.so.1 => (0x00007fff2c9fe000) 
    libcob.so.1 => /usr/local/lib/libcob.so.1 (0x00007f2549b06000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2549740000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2549439000) 
    libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f25491c5000) 
    libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f2548fa2000) 
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f2548d78000) 
    libdb-5.3.so => /usr/lib/x86_64-linux-gnu/libdb-5.3.so (0x00007f25489d6000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f25487d2000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007f2549d56000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f25485b3000) 

और फिर फेडोरा 20 पर, संकलक के समान संस्करण (थोड़ा अलग ढंग से बनाया गया है, ncurses के बजाय ncursesw खोजने - यह मानते हुए हाथ में इस मुद्दे का हिस्सा नहीं है)

$ cobc -x -v -lgtk-3 simple.cob 
Command line: cobc -x -v -lgtk-3 simple.cob 
Preprocessing: simple.cob -> /tmp/cob20658_0.cob 
Return status: 0 
Parsing:  /tmp/cob20658_0.cob (simple.cob) 
Return status: 0 
Translating: /tmp/cob20658_0.cob -> /tmp/cob20658_0.c (simple.cob) 
Executing:  gcc -std=gnu99 -c -I/usr/local/include -pipe -Wno-unused 
       -fsigned-char -Wno-pointer-sign -o "/tmp/cob20658_0.o" 
       "/tmp/cob20658_0.c" 
Return status: 0 
Executing:  gcc -std=gnu99 -Wl,--export-dynamic -o "simple" 
       "/tmp/cob20658_0.o" -L/usr/local/lib -lcob -lm -lgmp 
       -lncursesw -ldb -ldl -l"gtk-3" 
Return status: 0 

$ ldd simple 
    linux-vdso.so.1 => (0x00007fffae9cf000) 
    libcob.so.4 => /usr/local/lib/libcob.so.4 (0x00007f4ff2548000) 
    libm.so.6 => /lib64/libm.so.6 (0x0000003e5ae00000) 
    libgmp.so.10 => /lib64/libgmp.so.10 (0x0000003e7a200000) 
    libncursesw.so.5 => /lib64/libncursesw.so.5 (0x0000003e5d200000) 
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003e69800000) 
    libdb-5.3.so => /lib64/libdb-5.3.so (0x0000003e6ac00000) 
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003e5b200000) 
    libgtk-3.so.0 => /lib64/libgtk-3.so.0 (0x0000003e6ba00000) 
    libc.so.6 => /lib64/libc.so.6 (0x0000003e5aa00000) 
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e5b600000) 
    /lib64/ld-linux-x86-64.so.2 (0x0000003e5a600000) 
    libgdk-3.so.0 => /lib64/libgdk-3.so.0 (0x0000003e6a800000) 
    libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x0000003e65600000) 
    libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x0000003e75200000) 
    libX11.so.6 => /lib64/libX11.so.6 (0x00007f4ff2206000) 
    libXi.so.6 => /lib64/libXi.so.6 (0x0000003e62600000) 
    libXfixes.so.3 => /lib64/libXfixes.so.3 (0x0000003e5fe00000) 
    libcairo-gobject.so.2 => /lib64/libcairo-gobject.so.2 (0x0000003e6a400000) 
    libcairo.so.2 => /lib64/libcairo.so.2 (0x0000003e71000000) 
    libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x0000003e6e000000) 
    libatk-1.0.so.0 => /lib64/libatk-1.0.so.0 (0x0000003e75600000) 
    libatk-bridge-2.0.so.0 => /lib64/libatk-bridge-2.0.so.0 (0x0000003e6c600000) 
    libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x0000003e71c00000) 
    libpango-1.0.so.0 => /lib64/libpango-1.0.so.0 (0x0000003e73600000) 
    libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x0000003e61600000) 
    libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x0000003e66600000) 
    libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000003e5fa00000) 
    libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003e5e600000) 
    libXinerama.so.1 => /lib64/libXinerama.so.1 (0x0000003e61e00000) 
    libXrandr.so.2 => /lib64/libXrandr.so.2 (0x0000003e62200000) 
    libXcursor.so.1 => /lib64/libXcursor.so.1 (0x0000003e62e00000) 
    libXcomposite.so.1 => /lib64/libXcomposite.so.1 (0x0000003e74e00000) 
    libXdamage.so.1 => /lib64/libXdamage.so.1 (0x0000003e67e00000) 
    libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x0000003e6ec00000) 
    libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x0000003e6b000000) 
    libwayland-cursor.so.0 => /lib64/libwayland-cursor.so.0 (0x0000003e69c00000) 
    libXext.so.6 => /lib64/libXext.so.6 (0x0000003e5ea00000) 
    librt.so.1 => /lib64/librt.so.1 (0x0000003e5ce00000) 
    libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000003e61a00000) 
    libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x0000003e6f000000) 
    libfreetype.so.6 => /lib64/libfreetype.so.6 (0x0000003e60e00000) 
    libxcb.so.1 => /lib64/libxcb.so.1 (0x0000003e5da00000) 
    libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x0000003e6f800000) 
    libEGL.so.1 => /lib64/libEGL.so.1 (0x0000003e73200000) 
    libpng16.so.16 => /lib64/libpng16.so.16 (0x0000003e5f600000) 
    libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x0000003e6e800000) 
    libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x0000003e70800000) 
    libXrender.so.1 => /lib64/libXrender.so.1 (0x0000003e61200000) 
    libz.so.1 => /lib64/libz.so.1 (0x0000003e5ba00000) 
    libGL.so.1 => /lib64/libGL.so.1 (0x0000003e68200000) 
    libatspi.so.0 => /lib64/libatspi.so.0 (0x0000003e6c200000) 
    libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x0000003e62a00000) 
    libexpat.so.1 => /lib64/libexpat.so.1 (0x0000003e60a00000) 
    libffi.so.6 => /lib64/libffi.so.6 (0x0000003e5ee00000) 
    libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003e5ca00000) 
    libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003e5e200000) 
    libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x0000003e6fc00000) 
    libXau.so.6 => /lib64/libXau.so.6 (0x0000003e5d600000) 
    libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x0000003e65e00000) 
    libxcb-dri2.so.0 => /lib64/libxcb-dri2.so.0 (0x0000003e67200000) 
    libxcb-xfixes.so.0 => /lib64/libxcb-xfixes.so.0 (0x0000003e70400000) 
    libxcb-shape.so.0 => /lib64/libxcb-shape.so.0 (0x0000003e72a00000) 
    libgbm.so.1 => /lib64/libgbm.so.1 (0x0000003e70c00000) 
    libudev.so.1 => /lib64/libudev.so.1 (0x0000003e63200000) 
    libwayland-server.so.0 => /lib64/libwayland-server.so.0 (0x0000003e74a00000) 
    libglapi.so.0 => /lib64/libglapi.so.0 (0x0000003e67600000) 
    libdrm.so.2 => /lib64/libdrm.so.2 (0x0000003e67a00000) 
    libxcb-glx.so.0 => /lib64/libxcb-glx.so.0 (0x0000003e66e00000) 
    libXxf86vm.so.1 => /lib64/libXxf86vm.so.1 (0x0000003e66200000) 
    libpcre.so.1 => /lib64/libpcre.so.1 (0x0000003e5c600000) 
    liblzma.so.5 => /lib64/liblzma.so.5 (0x0000003e5c200000) 
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003e5be00000) 

उत्पन्न सी कोड उबंटू

/* Line: 4   : CALL    : simple.cob */ 
cob_procedure_params[0] = (cob_field *)&c_1; 
cob_procedure_params[1] = NULL; 
cob_glob_ptr->cob_call_params = 2; 
if (unlikely(call_gtk_init.funcvoid == NULL)) { 
    call_gtk_init.funcvoid = cob_resolve_cobol ("gtk_init", 0, 1); 
} 
call_gtk_init.funcnull ((cob_s32_t)0LL, NULL); 
b_1 = 0; 

और फेडोरा

/* Line: 4   : CALL    : simple.cob */ 
cob_procedure_params[0] = (cob_field *)&c_1; 
cob_procedure_params[1] = NULL; 
cob_glob_ptr->cob_call_params = 2; 
if (unlikely(call_gtk_init.funcvoid == NULL)) { 
    call_gtk_init.funcvoid = cob_resolve_cobol ("gtk_init", 0, 1); 
} 
call_gtk_init.funcnull ((cob_s32_t)0LL, NULL); 
b_1 = 0; 
0 पर (GnuCOBOL सी मध्यवर्ती उपयोग करता है)

मुझे उबंटू (पूर्ण ईएलएफ लिंकेज संकेत) पर अच्छा परिणाम मिलता है जब gtk_init को सी से बुलाया जाता है, न कि स्ट्रिंग को cob_resolve को पास किया जाता है। जीसीसी के साथ परीक्षण - सरल सरल-gtk.c -lgtk-3

तो आसपास के अनुमानों के साथ क्या बदल गया? यह dlopen के लिए ईएलएफ डेटा में शामिल नहीं है, यहां तक ​​कि libgtk-3.so

अधिक जानकारी: उबंटू पर त्रुटिपूर्ण संकलन रेखाएं वास्तव में ऐसा दिखती हैं जैसे यह काम करना चाहिए। (गलत वर्तनी जीटीके)

$ cobc -x -v -lgkt-3 simple.cob 
Command line: cobc -x -v -lgkt-3 simple.cob 
Preprocessing: simple.cob -> /tmp/cob13556_0.cob 
Return status: 0 
Parsing:  /tmp/cob13556_0.cob (simple.cob) 
Return status: 0 
Translating: /tmp/cob13556_0.cob -> /tmp/cob13556_0.c (simple.cob) 
Executing:  gcc -std=gnu99 -c -I/usr/local/include -pipe -Wno-unused 
       -fsigned-char -Wno-pointer-sign -o "/tmp/cob13556_0.o" 
       "/tmp/cob13556_0.c" 
Return status: 0 
Executing:  gcc -std=gnu99 -Wl,--export-dynamic -o "simple" 
       "/tmp/cob13556_0.o" -L/usr/local/lib -lcob -lm -lgmp -lncurses 
       -ldb -ldl -l"gkt-3" 
/usr/bin/ld: cannot find -lgkt-3 
collect2: error: ld returned 1 exit status 
Return status: 256 

और फिर भी, सही संकलन लाइन के साथ, ELF कोई संबंध नहीं दिखा रहा है जीटीके -3

मैं सिर अब थोड़ी देर के लिए और बंद पर इस पर खरोंच रहे हैं, उनपर संकेत । उबंटू और जीसीसी और/या एलडी और/या डलोपेन डीएलएसआईएम के साथ क्या धारणाएं बदल गईं, इस संकेत के लिए एक संकेत खोज रहे हैं।

ओपन-कोबोल पैकेज डेबियन और उबंटू रिपॉजिटरीज़ में कुछ सालों से काम कर रहा है। उबंटू पर भी ग्नकोबोल (जीएनयू कोबोल, और ओपनकोबीओएल) के पुराने संस्करण अब भी असफल हो गए हैं। कुछ बदल गया और हमें ज्ञापन नहीं मिला। कंपाइलर स्रोतों को बदलने के इच्छुक हैं, लेकिन पहले दोस्ताना स्टैक ओवरव्लो अंतर्दृष्टि की तलाश में हैं।

यह स्थानीय पर्यावरण समस्या प्रतीत नहीं होता है, क्योंकि यह उबंटू समस्या दूसरों के लिए भी दिख रही है। यह उन डीओएच में से एक की तरह लगता है! समस्याओं को ठीक करने के लिए सरल।

और अधिक जोड़ने के संकलन लॉग, LD_DEBUG = सभी डंप, या straces आदि करने के लिए तैयार की तुलना में अधिक

उत्तर

5

यह एक परिवर्तन ubuntu के लिए संकलक चालक को किए जाने के लिए लग रहा है - जब करने के लिए कोड भेजने में यह संकलन लाइन के लिए --as-needed विकल्प जोड़ने है collect2 उर्फ ​​लिंकर।

को समझने के लिए क्या हो रहा है हम cobc के निष्पादन के अधिक एकत्रित न करने के लिए यह दिखाया जा रहा है की तुलना में की जरूरत है:

cobc -x -v simple.cob -lgtk-3 
preprocessing simple.cob into /tmp/cob2743_0.cob 
translating /tmp/cob2743_0.cob into /tmp/cob2743_0.c 
gcc -pipe -c -Wno-unused -fsigned-char -Wno-pointer-sign -o /tmp/cob2743_0.o /tmp/cob2743_0.c 
gcc -pipe -Wl,--export-dynamic -o simple /tmp/cob2743_0.o -L/usr/lib -lcob -lm -lgmp -lncurses -ldb -ldl -lgtk-3 

अगर हम इसे उपज सी कोड को तोड़ने, और फिर इसे संकलन हम पाते हैं:

cobc -C -x -v simple.cob 
gcc -pipe -c -Wno-unused -fsigned-char -Wno-pointer-sign -o simple.o simple.c 
gcc -pipe -Wl,--export-dynamic -o simple simple.o -L/usr/lib -lcob -lm -lgmp -lncurses -ldb -ldl -lgtk-3 

gcc -### -pipe -Wl,--export-dynamic -o simple simple.o -L/usr/lib -lcob -lm -lgmp -lncurses -ldb -ldl -lgtk-3 

जो yiel:

हम आगे में पिछले जीसीसी लाइन एकत्रित न करने की जरूरत है डी एस आउटपुट के रूप में:

/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 "--sysroot=/" --build-id --eh-frame-hdr -m elf_x86_64 "--hash-style=gnu" --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o simple /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. --export-dynamic simple.o -lcob -lm -lgmp -lncurses -ldb -ldl -lgtk-3 -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o 

समस्या पहले--as-needed विकल्प की उपस्थिति है - यह कमांड लाइन पर सब स्पष्ट -l विकल्पों पलट - अगर उस फ़ाइल को बनाने .o के में पाया कुछ भी नहीं है जो पुस्तकालय पर निर्भर करता है, यह पुस्तकालय को लिंक नहीं करेगा - यह सटीक गतिशील लोडिंग केस है।

यह be the case since Oneiric लगता है।

यह सबसे सरल तरीके को जोड़ रहा है:

COB_LDFLAGS=-Wl,--no-as-needed 

अपने वातावरण जिसमें जोड़ने मुद्दे को ठीक करने के लिए करना चाहिए।

+0

पेटेश; धन्यवाद। यह आशा है कि आज संकलक स्रोत पेड़ में जाएगा। –

5

यह उत्पादन है कि सी कोड गतिशील रूप gtk_init को देखता है वास्तविक libgtk-3.so साझा लोड हो रहा है के बारे में पता नहीं है से प्रकट होता है रनटाइम पर ऑब्जेक्ट।

आप -fstatic-call विकल्प का उपयोग कर कोब के साथ संकलित कर सकते हैं। यह आपके पुस्तकालय कार्यों को gtk_init पर सीधे कॉल करेगा, और कॉल के माध्यम से dlopen/dlsym पर नहीं। इस विकल्प पर अधिक जानकारी आदेश info opencobol के माध्यम से जानकारी पृष्ठों में पाया जा सकता है:

संकलक विकल्पों के साथ

-fstatic-कॉल, अधिक कुशल कोड इस तरह उत्पन्न हो जाएगा:

subr(X); 

ध्यान दें कि यह विकल्प तभी प्रभावी होता है जब कॉल किया गया प्रोग्राम नाम एक शाब्दिक है (जैसे CALL "subr".'). With a data name (like कॉल SUBR।), प्रोग्राम को अभी भी गतिशील रूप से कहा जाता है।

यदि आप गतिशील मार्ग जाना चाहते हैं तो मैं केवल आपके कोबोल एप्लिकेशन को बता सकता हूं कि आप कितनी गतिशील वस्तुओं को रनटाइम पर लोड करना चाहते हैं। ऐसा करने के लिए आप अपने एप्लिकेशन को लॉन्च करने से पहले पर्यावरण परिवर्तनीय COB_PRE_LOAD सेट कर सकते हैं। इस पर्यावरण चर पर जानकारी इस ओपन कोबोल documentation में पाई जा सकती है। विशेष रूप से यह कहते हैं:

COB_PRE_LOAD एक वातावरण चर को नियंत्रित करता है कि क्या गतिशील लिंक मॉड्यूल एक रन में शामिल कर रहे हैं।

$ cobc occurl.c 
$ cobc occgi.c 
$ cobc -x myprog.cob 
$ export COB_PRE_LOAD=occurl:occgi 
$ ./myprog 

कि OpenCOBOL क्रम लिंक रिसोल्वर कॉल "CBL_OC_CURL_INIT" occurl.so मॉड्यूल में के लिए प्रवेश बिंदु को खोजने के लिए अनुमति देगा। नोट: COB_PRE_LOAD पर्यावरण चर में सूचीबद्ध मॉड्यूल में एक्सटेंशन नहीं हैं। ओपनकोबोल विभिन्न प्लेटफार्मों पर सही काम करेगा।

आप (bash का प्रयोग करके) यह कई तरह से कर सकते हैं:

COB_PRE_LOAD=libgtk-3 ./simple 

यह libgtk-3.so उपयोग करने के लिए COB_PRE_LOAD सेट हो जाएगा (आप .so को बंद रखना होगा) अपने आवेदन शुरू, और COB_PRE_LOAD वापस पुनर्स्थापित करने के लिए समाप्त होने पर क्या था वो। तुम भी साथ अपने सत्र की अवधि के लिए वातावरण चर सेट करने के लिए export उपयोग कर सकते हैं:

export COB_PRE_LOAD=libgtk-3 
./simple 

आप को कोलन से प्रत्येक को अलग करके COB_PRE_LOAD का उपयोग कर कई साझा वस्तुओं निर्दिष्ट कर सकते हैं। तो अगर आप उदाहरण के लिए libgtk-3 और libgmp की जरूरत है, तो आप ऐसा कर सकते हैं:

COB_PRE_LOAD=libgtk-3:libgmp ./simple 
+0

धन्यवाद माइकल, लेकिन यह वास्तव में यहां खेलने पर मूल मुद्दा नहीं है। GnuCOBOL की गतिशील लिंक सुविधा लंबे समय से काम कर रही है, और हाल ही में उबंटू पर तोड़ दिया। उपरोक्त कमांड लाइन फेडोरा पर ठीक काम करती है। उबंटू पर संकलन कमांड लाइन पर उल्लिखित एल पुस्तकालयों की ईएलएफ वस्तुओं में कोई संकेत नहीं छोड़ रहे हैं। यह नया टूटना है। (मैं आपके द्वारा संदर्भित एफएक्यू का रखरखाव हूं)। आपका एक अच्छा जवाब है, लेकिन यहां खेलने पर और भी कुछ है। GnuCOBOL गतिशील पुस्तकालय संदर्भों के साथ काम करने की जरूरत है, काम किया है, और काम करता है, हर जगह लेकिन हाल ही में उबंटू। –

+0

हेडस के लिए धन्यवाद। मैं आपको नहीं जानता था (ओपी) एफएक्यू के रखवाले थे। मेरा जवाब यह नहीं कहता है कि मैंने वास्तव में पूरी तरह अद्यतन 14.04 पर यह सब कोशिश की और COB_PRE_LOAD का उपयोग कर काम करता है। अगर मैं इसका उपयोग नहीं करता, तो मुझे आपकी त्रुटि gtk_init के साथ मिलती है। यदि आप वास्तव में इसका उपयोग करने का प्रयास करते हैं तो COB_PRE_LOAD वास्तव में आपके लिए समस्या का समाधान करता है तो मुझे उत्सुकता है? (यदि ऐसा नहीं है तो यह आपके पर्यावरण के साथ कुछ और अस्वस्थ सुझाव दे सकता है?)। –

+0

मुझे उत्सुकता है कि देर से बाइंडिंग (मेरे कर्सर लुक से) के तरीके के बाद से यह कैसे काम करता है - कोबोल कैसे पता चलेगा कि साझा वस्तुओं को रनटाइम पर लोड किया जाता है जब तक कि आपने इसे COB_PRE_LOAD जैसे कुछ नहीं बताया - जब तक कि अन्य वातावरण के साथ खेल में कुछ और स्थिर घटक है और जेनरेट "सी" कुछ अलग करता है मुझे लगता है कि यह एक स्पष्ट सवाल है। क्या आप अपने सभी प्लेटफार्मों पर कोबोल का एक ही संस्करण चला रहे हैं? (यानी उबंटू, फेडोरा इत्यादि) –

संबंधित मुद्दे