使用gcc的Informix 4GL共享库编译错误

问题描述 投票:-1回答:1

我正在尝试将Informix 4GL程序编译为Linux上的共享对象,但是出现编译错误。如果您不熟悉Informix 4GL,它将生成4gl代码转换为C代码,然后使用gcc编译C对象文件。

c4gl-帮助以-g,-f,-m,-O,-W或--param开头的选项会自动传递给cc调用的各个子进程。

编译对象c4gl -fPIC -c prog.4gl prog2.4gl生成prog.o prog2.o

请注意,prog.4gl或prog2.4gl都不包含主要部分,但是创建共享库是否需要该部分?

创建共享对象c4gl -shared -o libMYLIB.so prog.o prog2.o

/ usr / lib / gcc / x86_64-redhat-linux / 4.8.5 /../../../../ lib64 / crt1.o:在函数_start': (.text+0x20): undefined reference to main'中collect2:错误:ld返回1退出状态make:*** [libMYLIB.so]错误1

gcc shared-libraries informix 4gl
1个回答
0
投票
'c4gl'中的

“-shared”仅用于使用共享库进行构建,而不用于构建共享库。尝试使用“ --shared”

informix@irk:/data/informix/IBM/7.51.FC3/test$ c4gl f.4gl -shared -o f.so
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

informix@irk:/data/informix/IBM/7.51.FC3/test$ c4gl f.4gl -shared -o f.so --shared
informix@irk:/data/informix/IBM/7.51.FC3/test$ file f.so
f.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4db4edb836f13792c9733b355a02b2399e8d3419, not stripped
informix@irk:/data/informix/IBM/7.51.FC3/test$ 
© www.soinside.com 2019 - 2024. All rights reserved.