Might well be that it is a statically compiled library. Would be easy to test.
Do you mind opening a ticket for this? https://bugs.swift.org
> Hello all,
>
>
> I’m having some strange issues on osx when trying to link a C library module.
> I’ve successfully did this before with another library, however, for some
> reason this one doesn’t work.
> My module map looks like this:
>
> module CFCGI [system] {
> header "/usr/local/include/cfcgi/cfcgi.h"
> link "cfcgi"
> export *
> }
>
> And the output:
>
> swift build --clean && swift build -v
> Cloning into '/Users/valentinradu/Playgrounds/April/Packages/libcfcgi'...
> warning: --depth is ignored in local clones; use file:// instead.
> done.
> /Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-01-a.xctoolchain/usr/bin/swiftc
> -module-name April -incremental -emit-dependencies -emit-module
> -emit-module-path
> /Users/valentinradu/Playgrounds/April/.build/debug/April.swiftmodule
> -output-file-map
> /Users/valentinradu/Playgrounds/April/.build/debug/April.o/April/output-file-map.json
> -c /Users/valentinradu/Playgrounds/April/Sources/main.swift -I
> /Users/valentinradu/Playgrounds/April/.build/debug -j8 -Onone -g -target
> x86_64-apple-macosx10.10 -sdk
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -Xcc
> -F-module-map=/Users/valentinradu/Playgrounds/April/Packages/libcfcgi-1.0.0/module.modulemap
> -I /Users/valentinradu/Playgrounds/April/Packages/libcfcgi-1.0.0 -I
> /usr/local/include
> /Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-01-a.xctoolchain/usr/bin/swiftc
> -o /Users/valentinradu/Playgrounds/April/.build/debug/April
> /Users/valentinradu/Playgrounds/April/.build/debug/April.o/Sources/main.swift.o
> -Xlinker -all_load -target x86_64-apple-macosx10.10 -sdk
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -L/usr/local/lib
> Undefined symbols for architecture x86_64:
> "_cfcgi_create", referenced from:
> _main in main.swift.o
> "_cfcgi_free", referenced from:
> _main in main.swift.o
> "_cfcgi_start_and_wait", referenced from:
> _main in main.swift.o
> ld: symbol(s) not found for architecture x86_64
> <unknown>:0: error: build had 1 command failures
> swift-build: exit(1):
> ["/Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-01-a.xctoolchain/usr/bin/swift-build-tool",
> "-v", "-f",
> "/Users/valentinradu/Playgrounds/April/.build/debug/April.o/llbuild.yaml"]
>
> It looks like the linker ignores the `link "cfcgi”` part.
> I tried lots of things but failed to find the reason behind this. I’m
> starting to think this might be related to this paragraph in the clang docs:
>
> "Automatic linking with the link directive is not yet widely implemented,
> because it requires support from both the object file format and the linker.
> The notion is similar to Microsoft Visual Studio’s #pragma comment(lib…).”
>
> Unfortunately I find it a little vague and I can’t know for sure if it
> applies here.
>
> So far, this is what I know for sure:
> - libcfcgi.a is in /usr/local/lib and it’s compiled for x86_64
> - libcfcgi.a contains the above mentioned symbols, tested it with nm and
> linked it in a small C program
> - I’m on osx and build with the swift-2.2-SNAPSHOT-2015-12-01-a toolchain
>
>
> Any input on this would be greatly appreciated!
>
> Valentin Radu
>
> _______________________________________________
> swift-users mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users