digitalmars.D.learn - dmd -> ldmd2: /usr/bin/ld.gold: error: <source>.o: multiple definition
- kdevel (7/7) Mar 06 2021 After replacing dmd with ldmd2 (LDC 1.25.1) I get tons of link
- Preetpal (4/11) Mar 06 2021 Can you post more information? Like the full error that you are
- kdevel (53/58) Mar 07 2021 [link cmd]
- z (7/15) Mar 07 2021 to the affected modules? At the line just after the module
- kdevel (9/14) Mar 07 2021 It seems to require editing each file in the codebase, package.d
After replacing dmd with ldmd2 (LDC 1.25.1) I get tons of link errors all of the form mentioned in the subject. Any idea what can be done about it? (With a handcrafted single compile/link statement using ldc2 everything compiles but ideally I want to reuse my Makefile).
Mar 06 2021
On Saturday, 6 March 2021 at 22:14:26 UTC, kdevel wrote:After replacing dmd with ldmd2 (LDC 1.25.1) I get tons of link errors all of the form mentioned in the subject. Any idea what can be done about it? (With a handcrafted single compile/link statement using ldc2 everything compiles but ideally I want to reuse my Makefile).Can you post more information? Like the full error that you are seeing, the command you are forced to use to allow everything to compile, the platform that you are on (Mac, BSD, Linux, etc.).
Mar 06 2021
On Sunday, 7 March 2021 at 01:29:50 UTC, Preetpal wrote: [...]Can you post more information? Like the full error that you are seeing,[link cmd] /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes10assumeUsedySQBeQBd11_assumeUsed' /usr/bin/ld.gold: localscop.o: previous definition here /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes11optStrategy11__xopEqualsFKxSQBuQBtQBkKxQmZb' /usr/bin/ld.gold: localscop.o: previous definition here /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes11optStrategy9__xtoHashFNbNeKxSQBvQBuQBlZm' /usr/bin/ld.gold: localscop.o: previous definition here /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes12__ModuleInfoZ' /usr/bin/ld.gold: localscop.o: previous definition here /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes14dynamicCompileySQBiQBh15_dynamicCompile' /usr/bin/ld.gold: localscop.o: previous definition here /usr/bin/ld.gold: error: pointless.o: multiple definition of '_D3ldc10attributes16llvmFastMathFlag11__xopEqualsFKxSQBzQByQBpKxQmZb' [...]the command you are forced to use to allow everything to compile,./dmd -i -I=tillyscop:tillyscop/msgpack-d/src -O -g -of=localscop.o -c tillyscop/scop.d tillyscop/scopserializer.d and ./dmd -i -of=pointless.o -g -c pointless/package.d "dmd" is a symlink to /opt/ldc2/bin/ldmd2the platform that you are on (Mac, BSD, Linux, etc.).x86_64, Linux, OpenSUSE 42.2. $ rpm -qi binutils Name : binutils Version : 2.29.1 Release : 9.6.1 Architecture: x86_64 To check if the linker makes problems I have replaced ld.gold with the ld-new from hand-compiled binutils 2.36.1. Now the error messages look a bit different, a bit more verbose: /usr/bin/ld.gold: pointless.o:(.rodata._D3ldc10attributes10assumeUsedySQBeQBd11_assumeUsed+0x0): multiple definition of $ _D3ldc10attributes10assumeUsedySQBeQBd11_assumeUsed'; /usr/bin/ld.gold: DWARF error: could not find variable specificatio n at offset a0b /usr/bin/ld.gold: DWARF error: could not find variable specification at offset 23de localscop.o:(.rodata._D3ldc10attributes10assumeUsedySQBeQBd11_assumeUsed+0x0): first defined here /usr/bin/ld.gold: pointless.o: in function `_D3ldc10attributes11optStrategy11__xopEqualsFKxSQBuQBtQBkKxQmZb': /opt/ldc2-1.25.1-linux-x86_64/bin/../import/ldc/attributes.d:(.text._D3ldc10attributes11optStrategy11__xopEqualsFKxSQBuQB tQBkKxQmZb+0x0): multiple definition of `_D3ldc10attributes11optStrategy11__xopEqualsFKxSQBuQBtQBkKxQmZb'; localscop.o:/o pt/ldc2-1.25.1-linux-x86_64/bin/../import/ldc/attributes.d:(.text._D3ldc10attributes11optStrategy11__xopEqualsFKxSQBuQBtQ BkKxQmZb+0x0): first defined here [...]
Mar 07 2021
On Sunday, 7 March 2021 at 11:34:08 UTC, kdevel wrote:./dmd -i -I=tillyscop:tillyscop/msgpack-d/src -O -g -of=localscop.o -c tillyscop/scop.d tillyscop/scopserializer.d and ./dmd -i -of=pointless.o -g -c pointless/package.d "dmd" is a symlink to /opt/ldc2/bin/ldmd2Ah, try using `-i=-ldc` instead of `-i` alone to manually exclude the ldc.* modules from being included.
Mar 07 2021
On Sunday, 7 March 2021 at 12:47:45 UTC, kinke wrote: [...]Solved the issue. Many thanks!./dmd -i -of=pointless.o -g -c pointless/package.d "dmd" is a symlink to /opt/ldc2/bin/ldmd2Ah, try using `-i=-ldc` instead of `-i` alone to manually exclude the ldc.* modules from being included.
Mar 07 2021
On Saturday, 6 March 2021 at 22:14:26 UTC, kdevel wrote:After replacing dmd with ldmd2 (LDC 1.25.1) I get tons of link errors all of the form mentioned in the subject. Any idea what can be done about it? (With a handcrafted single compile/link statement using ldc2 everything compiles but ideally I want to reuse my Makefile).I think i had a similar error, can you try addingversion(LDC) pragma(LDC_no_moduleinfo)to the affected modules? At the line just after the module declaration, particularly in all package.d files and the file that contains the main function. However, your error seems to be with the files inside LDC... I'm not sure if this will solve it.
Mar 07 2021
On Sunday, 7 March 2021 at 11:50:45 UTC, z wrote: [...]I think i had a similar error, can you try addingIt seems to require editing each file in the codebase, package.d does not suffice. The errors don't go away but now undefined references show up: /usr/bin/ld.gold: App.o:(.data._D3App12__ModuleInfoZ+0x128): undefined reference to `_D9tillyscop14scopserializer12__ModuleInfoZ'version(LDC) pragma(LDC_no_moduleinfo)to the affected modules? At the line just after the module declaration, particularly in all package.d files and the file that contains the main function.
Mar 07 2021