<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>&nbsp;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);">&nbsp; &nbsp;&nbsp;</span><span class="" style="color: rgb(53, 86, 138);">header</span><span class="" style="color: rgb(0, 0, 0);">&nbsp;</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);">&nbsp; &nbsp;&nbsp;</span><span class="" style="color: rgb(53, 86, 138);">link</span><span class="" style="color: rgb(0, 0, 0);">&nbsp;</span>"cfcgi"</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(53, 86, 138);">export</span>&nbsp;*</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 &amp;&amp; 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;">&nbsp; "_cfcgi_create", referenced from:</div><div class="" style="margin: 0px; line-height: normal;">&nbsp; &nbsp; &nbsp; _main in main.swift.o</div><div class="" style="margin: 0px; line-height: normal;">&nbsp; "_cfcgi_free", referenced from:</div><div class="" style="margin: 0px; line-height: normal;">&nbsp; &nbsp; &nbsp; _main in main.swift.o</div><div class="" style="margin: 0px; line-height: normal;">&nbsp; "_cfcgi_start_and_wait", referenced from:</div><div class="" style="margin: 0px; line-height: normal;">&nbsp; &nbsp; &nbsp; _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;">&lt;unknown&gt;: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&nbsp;"cfcgi”` part.&nbsp;</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&nbsp;link&nbsp;directive is not yet widely implemented, because it requires support from both the object file format and the linker. The notion is&nbsp;similar to Microsoft Visual Studio’s&nbsp;#pragma&nbsp;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&nbsp;/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&nbsp;</div><div class="" style="margin: 0px; line-height: normal;">- I’m on osx and build with the&nbsp;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>