Linker cannot find malloc and free on OS X

bvoq via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jun 4 16:14:28 PDT 2017


On Sunday, 4 June 2017 at 16:13:22 UTC, Jacob Carlborg wrote:
> On 2017-06-04 12:45, Nordlöw wrote:
>> My gmp-d tests successfully on Linux as
>>
>> dub test
>>
>> but on OS X it fails as
>>
>> Undefined symbols for architecture x86_64:
>>   "free", referenced from:
>>   ...
>>   "malloc", referenced from:
>>   ...
>>
>> Any ideas on why?
>>
>> https://github.com/nordlow/gmp-d/issues/4#issuecomment-305974761
>
> I would recommend adding the --verbose flag to see the exact 
> commands invoked. That will print how the D compiler was 
> invoked. The copy-paste the exact command and add the -v flag 
> (for verbose). To the same with the C compiler and the linker.

The flag -L-lc seems to have been passed to the library.
This is the full error message after running it with dub test 
--verbose


Using dub registry url 'http://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/Users/kdkdk/.dub/packages/local-packages.json
Determined package version using GIT: gmp-d 
0.0.3+commit.16.gedb1291
Refreshing local packages (refresh existing: false)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/Users/kdkdk/.dub/packages/local-packages.json
   Found dependency libgmp 1.0.0
Refreshing local packages (refresh existing: false)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/Users/kdkdk/.dub/packages/local-packages.json
   Found dependency libgmp 1.0.0
Checking for upgrades.
Using cached upgrade results...
Generating test runner configuration 'gmp-d-test-library' for 
'library' (library).
Get module name from path: 
/Users/kdkdk/Documents/psi/gmp-d/src/gmp/dbgio.d
Get module name from path: 
/Users/kdkdk/Documents/psi/gmp-d/src/gmp/f.d
Excluding package.d file from test due to 
https://issues.dlang.org/show_bug.cgi?id=11847
Get module name from path: 
/Users/kdkdk/Documents/psi/gmp-d/src/gmp/q.d
Get module name from path: 
/Users/kdkdk/Documents/psi/gmp-d/src/gmp/traits.d
Get module name from path: 
/Users/kdkdk/Documents/psi/gmp-d/src/gmp/z.d
Refreshing local packages (refresh existing: false)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/Users/kdkdk/.dub/packages/local-packages.json
   Found dependency libgmp 1.0.0
Generate target gmp-d (executable 
/Users/kdkdk/Documents/psi/gmp-d gmp-d-test-library)
Generate target libgmp (staticLibrary 
/Users/kdkdk/.dub/packages/libgmp-1.0.0/libgmp libgmp)
Performing "unittest" build using dmd for x86_64.
libgmp 1.0.0: target for configuration "library" is up to date.
Using existing build in 
/Users/kdkdk/.dub/packages/libgmp-1.0.0/libgmp/.dub/build/library-unittest-posix.osx-x86_64-dmd_2074-0CBFB25E65B46672F7CAF7CC5BABCE87/.
Copying target from 
/Users/kdkdk/.dub/packages/libgmp-1.0.0/libgmp/.dub/build/library-unittest-posix.osx-x86_64-dmd_2074-0CBFB25E65B46672F7CAF7CC5BABCE87/liblibgmp.a to /Users/kdkdk/.dub/packages/libgmp-1.0.0/libgmp
Target 
'/Users/kdkdk/Documents/psi/gmp-d/.dub/build/gmp-d-test-library-unittest-posix.osx-x86_64-dmd_2074-6A4F59B4FBEFFE587575F03F4A8B5BD0/gmp-d-test-library' doesn't exist, need rebuild.
gmp-d 0.0.3+commit.16.gedb1291: building configuration 
"gmp-d-test-library"...
Using direct -l... flags for gmp, c.
dmd -c 
-of.dub/build/gmp-d-test-library-unittest-posix.osx-x86_64-dmd_2074-6A4F59B4FBEFFE587575F03F4A8B5BD0/gmp-d-test-library.o -debug -g -unittest -w -version=VibeCustomMain -version=Have_gmp_d -version=Have_libgmp -Isrc/ -I../../../.dub/packages/libgmp-1.0.0/libgmp/source/ ../../../../../var/folders/7s/rl2b7bj92t7c2dlnnmgzmc200000gn/T/dub_test_root-94ea7d66-86c6-4a27-9ede-42b0d74e6604.d src/gmp/dbgio.d src/gmp/f.d src/gmp/package.d src/gmp/q.d src/gmp/traits.d src/gmp/z.d -vcolumns
Linking...
dmd 
-of.dub/build/gmp-d-test-library-unittest-posix.osx-x86_64-dmd_2074-6A4F59B4FBEFFE587575F03F4A8B5BD0/gmp-d-test-library .dub/build/gmp-d-test-library-unittest-posix.osx-x86_64-dmd_2074-6A4F59B4FBEFFE587575F03F4A8B5BD0/gmp-d-test-library.o ../../../.dub/packages/libgmp-1.0.0/libgmp/.dub/build/library-unittest-posix.osx-x86_64-dmd_2074-0CBFB25E65B46672F7CAF7CC5BABCE87/liblibgmp.a -L-lgmp -L-lc -g
Undefined symbols for architecture x86_64:
   "free", referenced from:
       _D3gmp1z3MpZ6__ctorMFNaNbNcNiNexAyakZS3gmp1z3MpZ in 
gmp-d-test-library.o
       _D3gmp1z3MpZ10fromStringMFNaNbNcNiNjNexAyakZS3gmp1z3MpZ in 
gmp-d-test-library.o
      (maybe you meant: 
_D2rt4util9container5treap33__T5TreapTS2gc11gcinterface4RootZ5Treap8freeNodeFNbNiPS2rt4util9container5treap33__T5TreapTS2gc11gcinterface4RootZ5Treap4NodeZv, _D2gc4impl12conservative2gc3Gcx8log_freeMFNbPvZv , _D2gc4impl12conservative2gc15LargeObjectPool9freePagesMFNbmmZv , _D4core6memory2GC4freeFNaNbPvZv , _D2gc4impl12conservative2gc14ConservativeGC163__T9runLockedS63_D2gc4impl12conservative2gc14ConservativeGC10freeNoSyncMFNbPvZvS37_D2gc4impl12conservative2gc8freeTimelS37_D2gc4impl12conservative2gc8numFreeslTPvZ9runLockedMFNbKPvZv , _D2gc4impl12conservative2gc14ConservativeGC10freeNoSyncMFNbPvZv , _D2gc4impl12conservative2gc8freeTimel , _D2rt5minfo11ModuleGroup4freeMFZv , _gc_free , _D2gc4impl6manual2gc8ManualGC4freeMFNbPvZv , _D2rt7dwarfeh15ExceptionHeader4freeFPS2rt7dwarfeh15ExceptionHeaderZv , _D2rt4util9container5treap34__T5TreapTS2gc11gcinterface5RangeZ5Treap8freeNodeFNbNiPS2rt4util9container5treap34__T5TreapTS2gc11gcinterface5RangeZ5Treap4NodeZv , _D2gc4impl12conservative2gc4Pool12freePageBitsMFNbmKxG4mZv , _D2gc4impl12conservative2gc14ConservativeGC4freeMFNbPvZv )
   "malloc", referenced from:
       _D3gmp1z3MpZ19_allocStringzCopyOfMFNaNbNiNexAyaZPa in 
gmp-d-test-library.o
      (maybe you meant: 
_D2gc4impl12conservative2gc3Gcx10log_mallocMFNbPvmZv, 
_D2gc4impl6manual2gc8ManualGC6mallocMFNbmkxC8TypeInfoZPv , 
_D2gc4impl12conservative2gc14ConservativeGC207__T9runLockedS83_D2gc4impl12conservative2gc14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZPvS40_D2gc4impl12conservative2gc10mallocTimelS40_D2gc4impl12conservative2gc10numMallocslTPvTmTkTmTxC8TypeInfoZ9runLockedMFNbKPvKmKkKmKxC8TypeInfoZPv , _D2gc4impl12conservative2gc14ConservativeGC200__T9runLockedS79_D2gc4impl12conservative2gc14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS40_D2gc4impl12conservative2gc10mallocTimelS40_D2gc4impl12conservative2gc10numMallocslTmTkTmTxC8TypeInfoZ9runLockedMFNbKmKkKmKxC8TypeInfoZPv , _D2gc4impl12conservative2gc14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv , _D2gc4impl12conservative2gc10mallocTimel , _D2gc4impl12conservative2gc14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv , _D4core6memory2GC6mallocFNaNbmkxC8TypeInfoZPv , _gc_malloc , _D2rt4util9container6common7xmallocFNbNimZPv )
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to 
see invocation)
Error: linker exited with status 1
FAIL 
.dub/build/gmp-d-test-library-unittest-posix.osx-x86_64-dmd_2074-6A4F59B4FBEFFE587575F03F4A8B5BD0/ gmp-d-test-library executable
dmd failed with exit code 1.


More information about the Digitalmars-d-learn mailing list