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

Reply via email to