1. Compiling edx in openeuphoria container
- Posted by axtens_bruce Aug 14, 2022
- 785 views
root@bdabc4608e7c:/opt# ls /usr/local/euphoria-4.1.0-Linux-x64/bin bench.ex creole eu.a eubind eucoverage.ex eudist euloc eushroud eutest bugreport.ex echoversion eu.cfg euc eudbg.a eudoc euloc.ex euso.a buildcpdb.ex edx.ex eub eucoverage eudis eui euphoria.txt eusodbg.a root@bdabc4608e7c:/opt# euc /usr/local/euphoria-4.1.0-Linux-x64/bin/edx.ex Build directory: build-375060/ Translating code, pass: 1 2 3 4 5 6 7 8 9 10 11 generating Compiling with GCC Compiling 2% init-.c Compiling 8% edx.c Compiling 12% main-.c Compiling 17% graphics.c Compiling 21% types.c Compiling 25% console.c Compiling 29% get.c Compiling 34% machine.c Compiling 38% memory.c Compiling 42% dll.c Compiling 46% text.c Compiling 51% convert.c Compiling 55% search.c Compiling 59% filesys.c Compiling 63% datetime.c Compiling 68% sequence.c Compiling 72% sort.c Compiling 76% wildcard.c Compiling 80% scinot.c Compiling 85% eumem.c Compiling 89% graphcst.c Compiling 93% syncolor.c Compiling 97% tokenize.c Linking 100% ../edx /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_machine.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_w.o): relocation R_X86_64_PC32 against symbol `isatty@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_alloc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_pcre.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_socket.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_runtime.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_task.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(be_callc.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(pcre_compile.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(pcre_exec.o): relocation R_X86_64_32 against symbol `_pcre_default_tables' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a(pcre_fullinfo.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: final link failed: nonrepresentable section on output collect2: error: ld returned 1 exit status Unable to link /opt/edx Status: 1 Command: gcc -o /opt/edx init-.o edx.o main-.o graphics.o types.o console.o get.o machine.o memory.o dll.o text.o convert.o search.o filesys.o datetime.o sequence.o sort.o wildcard.o scinot.o eumem.o graphcst.o syncolor.o tokenize.o /usr/local/euphoria-4.1.0-Linux-x64/bin/eu.a -m64 -ldl -lm -lpthread
How do I pass in -fPIC?
-- Bruce
2. Re: Compiling edx in openeuphoria container
- Posted by ghaberek (admin) Aug 15, 2022
- 692 views
axtens_bruce said...
How do I pass in -fPIC?
-- Bruce
You need to add -extra-lflags="-no-pie" to your euc command. You may still have issues linking executables due to changes in recent libc versions. See this thread for recent discussion. Not much we can do about that until we get a new release out unless you want to build euc from source.
Although now that I'm thinking about it, I might be able to spin up a Dockerfile that uses the latest source build of Euphoria. It would be unstable though, since we've no guarantee right now that we're committing working code to the master branch.
-Greg
3. Re: Compiling edx in openeuphoria container
- Posted by axtens_bruce Aug 16, 2022
- 660 views
ghaberek said...
You need to add -extra-lflags="-no-pie" to your euc command.
That works perfectly! I now have a functional edx. Thanks.
--Bruce