a mysterious linking error introduced by import a library
Johann
krani at otomy.com
Sat Oct 14 17:53:01 UTC 2023
The following is a project created by `dub init`.
dub.json
```json
{
"authors": [
"john"
],
"dependencies": {
"squiz-box": {
"repository": "git+https://github.com/rtbo/squiz-box.git",
"version": "6a10caaa01f7cefbe83c65b5a939bee2e0296250"
}
},
"description": "Demo program",
"license": "BSD 2 clause",
"name": "gdc_curl"
}
```
app.d
```d
import std.net.curl : get, download;
import squiz_box;
void main()
{
immutable jsonURL = "https://ziglang.org/download/index.json";
auto jsonStr = get(jsonURL);
}
```
`squiz_box` is a dlang library for compression and decompression.
I am able to compile this `ldc2` and `dmd`, but not `gdc`. The
error appears to be related to the line `import squiz_box`,
removing of which causes the program to compile successfully, as
the `main` function doesn't call the `squiz_box` library at all.
```bash
dub build --compiler=gdc --verbose
Using dub registry url 'https://code.dlang.org/'
Note: Failed to determine version of package gdc_curl at ..
Assuming ~master.
Version selection for dependency squiz-box (squiz-box) of
gdc_curl is missing.
Scanning local packages...
Determined package version using GIT: squiz-box
0.2.1+commit.51.ga962211
Determined package version using GIT: squiz-box
0.2.1+commit.87.gf0ba9db
Determined package version using GIT: squiz-box
0.3.0+commit.15.g6a10caa
Found dependency squiz-box
git+https://github.com/rtbo/squiz-box.git
Generating using build
Configuring dependent gdc_curl, deps:"squiz-box"
Configuring dependent squiz-box, deps:
Starting Performing "debug" build using gdc for x86_64.
Up-to-date squiz-box 0.3.0+commit.15.g6a10caa: target for
configuration [library] is up to date.
Using existing build in
/home/john/.dub/cache/squiz-box/0.3.0+commit.15.g6a10caa/build/library-debug-8Bi8iTVskbYwwEp3wicUsw.
Copying target from
/home/john/.dub/cache/squiz-box/0.3.0+commit.15.g6a10caa/build/library-debug-8Bi8iTVskbYwwEp3wicUsw/libsquiz-box.a to /home/john/.dub/packages/squiz-box/6a10caaa01f7cefbe83c65b5a939bee2e0296250/squiz-box
Target
'/home/john/.dub/cache/gdc_curl/~master/build/application-debug-G0CAYx5HyZ1UeOgA779Diw/gdc_curl' doesn't exist, need rebuild.
Building gdc_curl ~master: building configuration
[application]
Using pkg-config to resolve library flags for liblzma, libzstd.
Using direct -l... flags for bz2.
gdc -o
/home/john/.dub/cache/gdc_curl/~master/build/application-debug-G0CAYx5HyZ1UeOgA779Diw/gdc_curl -fdebug -g -Werror -Wall -fversion=Have_gdc_curl -fversion=Have_squiz_box -fversion=HaveSquizBzip2 -fversion=HaveSquizLzma -fversion=HaveSquizZstandard -Isource/ -I/home/john/.dub/packages/squiz-box/6a10caaa01f7cefbe83c65b5a939bee2e0296250/squiz-box/src/ source/app.d /home/john/.dub/cache/squiz-box/0.3.0+commit.15.g6a10caa/build/library-debug-8Bi8iTVskbYwwEp3wicUsw/libsquiz-box.a -lbz2 -Xlinker -llzma -Xlinker -lzstd
/usr/bin/ld: /tmp/ccPUp96p.o: in function
`_D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl':
/usr/lib/gcc/x86_64-redhat-linux/13/include/d/std/format/internal/write.d:3639: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAyaZQoFQhZ9__lambda2Z__TQCpTQBcZQCxMFNaNfQBpZb'
/usr/bin/ld: /tmp/ccPUp96p.o: in function
`_D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTAyaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv':
/usr/lib/gcc/x86_64-redhat-linux/13/include/d/std/format/internal/write.d:262: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T20formatValueImplUlongTSQDg5array__T8AppenderTAyaZQoTaZQCdFKQBlmIbMKxSQFaQDu4spec__T10FormatSpecTaZQpZ10__lambda16Z__TQFvTAaZQGcMFNaNfQmZb'
/usr/bin/ld:
/usr/lib/gcc/x86_64-redhat-linux/13/include/d/std/format/internal/write.d:268: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T20formatValueImplUlongTSQDg5array__T8AppenderTAyaZQoTaZQCdFKQBlmIbMKxSQFaQDu4spec__T10FormatSpecTaZQpZ10__lambda17Z__TQFvTAaZQGcMFNaNfQmZb'
collect2: error: ld returned 1 exit status
FAIL
/home/john/.dub/cache/gdc_curl/~master/build/application-debug-G0CAYx5HyZ1UeOgA779Diw gdc_curl executable
Error gdc failed with exit code 1.
```
I cannot figure out this error is caused by `squiz_box` libray,
`gdc` or `dub`. My apologies to you if I should have filed this
bug in other places. Thanks for your attention.
More information about the D.gnu
mailing list