1. Compiling edx in openeuphoria container

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

new topic     » topic index » view message » categorize

2. Re: Compiling edx in openeuphoria container

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

new topic     » goto parent     » topic index » view message » categorize

3. Re: Compiling edx in openeuphoria container

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu