os x swift生成包管理器无法从unixODBC依赖项中找到共享库
在OS X El Capitan上,我试图为unixODBC 2.3.4集成一个swift包装器,但在链接器步骤生成失败,出现以下错误:os x swift生成包管理器无法从unixODBC依赖项中找到共享库,c,swift,C,Swift,在OS X El Capitan上,我试图为unixODBC 2.3.4集成一个swift包装器,但在链接器步骤生成失败,出现以下错误: ld:未找到体系结构x86\u 64的-lodbc.2的库 我立即确认安装的库实际上是64位的: file /usr/local/lib/libodbc.dylib /usr/local/lib/libodbc.dylib: Mach-O 64-bit dynamically linked shared library x86_64 对于我的项目,我使用
ld:未找到体系结构x86\u 64的-lodbc.2的库
我立即确认安装的库实际上是64位的:
file /usr/local/lib/libodbc.dylib
/usr/local/lib/libodbc.dylib: Mach-O 64-bit dynamically linked shared library x86_64
对于我的项目,我使用的是swift软件包管理器,因此我为swift安装了最新的开发人员位,并将其bin文件夹预先添加到我的路径
环境变量中:
export PATH=/Library/Developer/toolschains/swift latest.xctoolschain/usr/bin:$PATH
我使用自制软件成功地安装了unixODBC 2.3.4,并创建了必要的odbcinst.ini和odbc.ini文件以访问postegresql数据库。通过使用unixODBC附带的isql实用程序连接到远程数据库,我确认了odbc的安装和配置是正确的
在我的CunixODBCswift项目中,我创建了以下module.modulemap文件,引用了新安装的unixODBC共享库
module CunixODBC [system] {
header "/usr/local/Cellar/unixodbc/2.3.4/include/unixodbc_conf.h"
header "/usr/local/Cellar/unixodbc/2.3.4/include/sql.h"
header "/usr/local/Cellar/unixodbc/2.3.4/include/sqltypes.h"
link "odbc"
export *
}
在建立对CunixODBC依赖关系的myswiftodbc项目中,my Package.swift文件为:
import PackageDescription
let package = Package(
dependencies: [
.Package(url: "../CunixODBC", versions: Version(0,0,4)..<Version(1,0,0))
]
)
编译和链接成功,生成的可执行文件按预期工作
我缺少什么步骤或配置?尝试将:
-Xlinker-L/usr/local/lib
添加到您的swift构建
实例化中。尝试将:-Xlinker-L/usr/local/lib
添加到您的swift构建
实例化中。我尝试了一次,但不幸的是它没有起作用。第一次尝试生成以下错误:`swift build-Xlinker/usr/local/lib Linking swiftobc ld:无法映射文件,errno=22文件'/usr/local/lib'用于架构x86_64:0:error:link命令失败,退出代码为1(使用-v查看调用):0:error:build有1个命令失败错误:退出(1):/Library/Developer/toolschains/swift-DEVELOPMENT-SNAPSHOT-2016-03-01-a.xctoolschain/usr/bin/swift-build-tool-f/Users/cwhelan/DEVELOPMENT/swift/swifftodbc/.build/debug.yaml default'消息表明它需要完整的文件路径,因此我接下来尝试了odbc库的完整路径:swift build-Xlinker/usr/local/libodbc.dylib。这消除了“无法映射文件”错误,但原始帖子返回了错误。很抱歉,它应该是:-Xlinker-L/usr/local/lib
我尝试了一下,不幸的是它没有工作。第一次尝试生成以下错误:`swift build-Xlinker/usr/local/lib Linking swiftobc ld:无法映射文件,errno=22文件'/usr/local/lib'用于架构x86_64:0:error:link命令失败,退出代码为1(使用-v查看调用):0:error:build有1个命令失败错误:退出(1):/Library/Developer/toolschains/swift-DEVELOPMENT-SNAPSHOT-2016-03-01-a.xctoolschain/usr/bin/swift-build-tool-f/Users/cwhelan/DEVELOPMENT/swift/swifftodbc/.build/debug.yaml default'消息表明它需要完整的文件路径,因此我接下来尝试了odbc库的完整路径:swift build-Xlinker/usr/local/libodbc.dylib。这消除了“无法映射文件”错误,但返回了原始帖子中的错误。很抱歉,应该是:-Xlinker-L/usr/local/lib
cc -L/usr/local/lib -I/usr/local/Cellar/unixodbc/2.3.4/include -lodbc odbctest.c -o odbctest