Altera_Forum
Honored Contributor
16 years agoProblem building C++ shared library
I am using uClinux-dist with MMU and the gcc 4.1.2 binary toolchain, and I am having a problem with g++ when building a shared library.
A test:#include <stdio.h>
int main(void)
{
printf("hello world\n");
} gcc build works: $ /data/nios/nios2-linux/toolchain-mmu/x86-linux2/bin/nios2-linux-gnu-gcc -DEMBED -mhw-mul -mno-hw-mulx -mno-hw-div -shared -o hello.c.o -c /data/nios/hello.c
$ /data/nios/nios2-linux/toolchain-mmu/x86-linux2/bin/nios2-linux-gnu-gcc -mhw-mul -mno-hw-mulx -mno-hw-div -shared -Wl,-soname,libhelloworldc.so -o libhelloworldc.so hello.c.o Same thing, with g++: $ /data/nios/nios2-linux/toolchain-mmu/x86-linux2/bin/nios2-linux-gnu-g++ -DEMBED -mhw-mul -mno-hw-mulx -mno-hw-div -shared -o hello.c.o -c /data/nios/hello.c
$ /data/nios/nios2-linux/toolchain-mmu/x86-linux2/bin/nios2-linux-gnu-g++ -mhw-mul -mno-hw-mulx -mno-hw-div -shared -Wl,-soname,libhelloworldc.so -o libhelloworldc.so hello.c.o
/data/nios/nios2-linux/toolchain-mmu/x86-linux2/bin/../lib/gcc/nios2-linux-gnu/4.1.2/../../../../nios2-linux-gnu/bin/ld: fde encoding in hello.c.o(.eh_frame) prevents .eh_frame_hdr table being created. The library actually gets created, but a program using a C++ library built like this gives a SEGV on start. If I build a C++ helloworld executable using g++ and make sure not to use the "-shared" option, then it works. Ideas?