没有规则来制作目标/usr/lib/someLib.so

时间:2013-01-15 21:32:37

标签: cmake

构建用于在buntu 11.04中工作,现在在12.04中没有。

someLib.so的位置存在冲突。也就是说,它正在寻找错误的位置。 /usr/lib/here/someLib.so是正确的位置。

当我在ccmake中运行'c'配置cmd时,它注意到了冲突,一次。现在ccmake不再抱怨,但错误依然存在。 runtime library [someLib.so] in /usr/lib may be hidden by files in: /usr/lib/here

CMakeLists.txt中导致构建错误的行是:

ADD_EXECUTABLE(test main.cpp)
TARGET_LINK_LIBRARIES(test moreStuff evenMoreStuff)

我在build.make文件中看到了问题。这是由ccmake生成的。我无法弄清楚ccmake在someLib.so处于/usr/lib/而非@ /usr/lib/here/的想法。我认为它会在某处SET()声明。我找不到了。

1)什么是配置文件(ccmake'c'cmd)?它会在哪里(同一个目录?)? 我想如果我去它,我将能够再次看到错误。 (改变CMakeFile.txt似乎不会这样做。)
2)如何找出someLib.so的位置? (我在找什么?)

我讨厌CCMAKE。感谢

2 个答案:

答案 0 :(得分:1)

我想说这是一个find_library调用的问题。如果我没记错的话,当您的环境指向两个包含同名库文件的不同位置时,就会发生这种情况。

您可以通过更改环境以防止它发生这种情况,使其不指向两个位置或使用NO _ * _ PATH与find_library调用之一来阻止cmake找到这两个位置(例如,您可以定义自己的路径这个find_library并使用NO_DEFAULT_PATH来阻止cmake使用环境路径 - 参见文档:http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:find_library

find_library(someLib_location NAMES someLib PATHS / usr / lib / here / NO_DEFAULT_PATH)

关于1)我认为它们被称为CMakeCache文件,但最安全的方法是删除整个构建结构(如果你正在构建源代码,这不是问题)

关于2)我会按库名搜索CMakeList.txt文件(没有.so后缀和lib前缀,因为它们可能是由CMAKE_FIND_LIBRARY_PREFIXES和CMAKE_FIND_LIBRARY_SUFFIXES变量添加的)

答案 1 :(得分:0)

首先,我建议使用以下命令检查软件包是否已安装:

const functions = require('firebase-functions');
const { Storage } = require('@google-cloud/storage');
const express = require('express');
var app = express();
var fs = require('fs');

// Your Google Cloud Platform project ID
const projectId ='<project-Id>';

// Creates a client
const storage = new Storage({
projectId: projectId,
keyFilename: '<>'
});


const bucket = storage.bucket("<bucket-name>");

// Byte aray to Image 

function saveImage(filename, data) {
console.log("inside saveImage", data.length);
var myBuffer = new Buffer.alloc(data.length);
for (var i = 0; i < data.length; i++) {
    myBuffer[i] = data[i];
}
console.log(myBuffer)
fs.createWriteStream(filename, myBuffer, 'binary', function (err) {
    console.log("inside writeFile");
    if (err) {
        console.log('error inside fs', err);
    } else {
        console.log("The file was saved!");
    }
 });
}

saveImage("image1.png", result);


app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, 
Content-Type, Accept");
next();
});



exports.UploadImage = functions.https.onRequest(app);

如果尚未安装,请使用apt-get或任何其他方法进行安装,然后重试。如果已安装但位置错误,请使用link命令创建正确的位置,如下所示:

dpkg -L SomeLib

希望对您有帮助。

相关问题