<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hello all,<div class=""><br class=""></div><div class=""><br class=""></div><div class="">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.</div><div class="">My module map looks like this:</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(53, 86, 138);">module</span> CFCGI [system] {</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(232, 35, 0);"><span class="" style="color: rgb(0, 0, 0);"> </span><span class="" style="color: rgb(53, 86, 138);">header</span><span class="" style="color: rgb(0, 0, 0);"> </span>"/usr/local/include/cfcgi/cfcgi.h"</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(232, 35, 0);"><span class="" style="color: rgb(0, 0, 0);"> </span><span class="" style="color: rgb(53, 86, 138);">link</span><span class="" style="color: rgb(0, 0, 0);"> </span>"cfcgi"</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> <span class="" style="color: rgb(53, 86, 138);">export</span> *</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</div></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><br class=""></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;">And the output:</span></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;"><br class=""></span></div><div class="" style="margin: 0px; line-height: normal;"><span class="">swift build --clean && swift build -v</span></div><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; line-height: normal;">Cloning into '/Users/valentinradu/Playgrounds/April/Packages/libcfcgi'...</div><div class="" style="margin: 0px; line-height: normal;">warning: --depth is ignored in local clones; use file:// instead.</div><div class="" style="margin: 0px; line-height: normal;">done.</div><div class="" style="margin: 0px; line-height: normal;">/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</div><div class="" style="margin: 0px; line-height: normal;">/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</div><div class="" style="margin: 0px; line-height: normal;">Undefined symbols for architecture x86_64:</div><div class="" style="margin: 0px; line-height: normal;"> "_cfcgi_create", referenced from:</div><div class="" style="margin: 0px; line-height: normal;"> _main in main.swift.o</div><div class="" style="margin: 0px; line-height: normal;"> "_cfcgi_free", referenced from:</div><div class="" style="margin: 0px; line-height: normal;"> _main in main.swift.o</div><div class="" style="margin: 0px; line-height: normal;"> "_cfcgi_start_and_wait", referenced from:</div><div class="" style="margin: 0px; line-height: normal;"> _main in main.swift.o</div><div class="" style="margin: 0px; line-height: normal;">ld: symbol(s) not found for architecture x86_64</div><div class="" style="margin: 0px; line-height: normal;"><unknown>:0: error: build had 1 command failures</div><div class="" style="margin: 0px; line-height: normal;">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"]</div></div></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">It looks like the linker ignores the `link "cfcgi”` part. </div><div class="" style="margin: 0px; line-height: normal;">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:</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">"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…).”</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">Unfortunately I find it a little vague and I can’t know for sure if it applies here.</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">So far, this is what I know for sure:</div><div class="" style="margin: 0px; line-height: normal;">- libcfcgi.a is in /usr/local/lib and it’s compiled for x86_64</div><div class="" style="margin: 0px; line-height: normal;">- libcfcgi.a contains the above mentioned symbols, tested it with nm and linked it in a small C program </div><div class="" style="margin: 0px; line-height: normal;">- I’m on osx and build with the swift-2.2-SNAPSHOT-2015-12-01-a toolchain</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">Any input on this would be greatly appreciated!</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">Valentin Radu</div></body></html>