是否有可能编译项目在32位与cmake和gcc一对64位系统?它可能是,但我该怎么做?
当我尝试"无知"的方式,没有设置任何参数/标志/等,只是设置LD_LIBRARY_PATH找到它中的链接库~/tools/lib似乎忽略它,只查看名为lib64的子目录.
当我尝试在64位linux(debian)机器上使用cmake和gcc构建这个项目时,我从链接器收到错误:
Linking C executable ../../../../cpsadamsx
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlopen'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlclose'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlerror'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlsym'
collect2: ld returned 1 exit status
make[2]: *** [cpsadamsx] Error 1
make[1]: *** [sundials/examples/cpodes/serial/CMakeFiles/cpsadamsx.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Run Code Online (Sandbox Code Playgroud)
显然dlopen,dlclose,dlerror和dlsym是对libdl.so的引用.我在/lib64/libdl.so.2中有该库,但为什么找不到它?
它会是一个正常的'./configure; 使; make install'-path我可以设置LIBS变量并发出这样的configure命令(我认为):
export LIBS=-ldl && ./configure
Run Code Online (Sandbox Code Playgroud)
但是我现在该怎么做?
更新:
所以似乎找到了(或至少一个)库,但不包含有问题的符号.也许它尝试使用/ lib中的32位库?
有没有办法反汇编/lib64/libdl.so.2以确保它有引用dlopen等?
现在问题似乎是将构建工具引导到库的正确版本.
我尝试构建的项目的测试无法构建(缺少库).测试本身并不重要,但阻止我构建和安装基本文件.所以我想做一个快速修复.
如何在cmake项目中转换测试的构建?我应该在根目录或子目录测试中编辑CMakeLists.txt文件吗?我该如何编辑?
发出一个命令ENABLE_TESTING().我试图评论那个,但它没有帮助.还尝试重命名子目录测试.也没有帮助.这只适用于正在构建"隐式"测试的特殊情况.
我不时删除不应该的文件,最糟糕的是我自己写的文件.因此,我有很多次被Emacs的备份功能保存.
但我的问题是Emacs只在你第一次保存缓冲区时进行备份.有没有办法让Emacs每次按下Cx Cs时都这样做?
这就是我的.emacs目前的样子(只有处理备份的部分):
*剪*
;; =====备份=====
;; 启用备份文件.
(setq make-backup-files t)
;; 将所有备份文件保存在此目录中.
(setq backup-directory-alist(quote((".*"."〜/ .emacs_backups /"))))
;; 始终通过复制备份(最安全,但最慢)
(setq备份复制t)
;; 保存备份时附加.~1~(和递增数字)到文件末尾
(setq version-control t)
;; 定义要保留的文件的旧版本
数量
(从;;最近和向后计数(setq keep-new-versions 100)开始
*剪*