我开发了debian软件包,并且在我的post/pre脚本中有语法错误(在我的情况下是postrm).我成功安装包,但现在我无法删除此包:
/var/lib/dpkg/info/blablabla.postrm: 11: Syntax error: ";;" unexpected
dpkg: error processing blablabla (--remove):
subprocess installed post-removal script returned error exit status 2
Run Code Online (Sandbox Code Playgroud)
如何忽略它并完全删除包?
所以,我对std :: map,lambda和stl算法(remove_if)有疑问.实际上,与std :: list或std :: vector相同的代码运行良好.
我的测试示例:
#include <map>
#include <iostream>
#include <algorithm>
struct Foo
{
Foo() : _id(0) {}
Foo(int id) : _id(id)
{
}
int _id;
};
typedef std::map<int, Foo> FooMap;
int main()
{
FooMap m;
for (int i = 0; i < 10; ++i)
m[i + 100] = Foo(i);
int removeId = 6;
// <<< Error here >>>
std::remove_if(m.begin(), m.end(), [=](const FooMap::value_type & item) { return item.second._id == removeId ;} );
for (auto & item : …
Run Code Online (Sandbox Code Playgroud) 我不明白如何使用CMake配置项目和处理命令行选项.我需要设置第三方库目录的变量(例如Poco和GTest).通常,我只是运行带有必要参数的./configure.例如:
./configure --poco-inc=~/libs/poco/include --poco-lib=~/libs/poco/lib --gtest-inc=~/libs/gtest/include --gtest-lib=~/libs/gtest/lib
Run Code Online (Sandbox Code Playgroud)
但是如何将等效信息传递给CMake?如何在cmake文件中使用'set'或'property'指定选项并进行处理?
所以,我搜索好的工具将我的C++代码与python集成,起初我看了boost.python.
我从boost文档中得到了问候语,并尝试构建并运行它.源代码是(src/hello.cpp):
#include <Python.h>
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
Run Code Online (Sandbox Code Playgroud)
问题1 - Windows和mingw
我尝试构建和我的结果:
g++ -o build\hello.o -c -IE:\Programming\libs\boost_1_48_0 -IE:\Programming\Python\include src\hello.cpp
g++ -shared -o pyhello.dll build\hello.o -LE:\Programming\libs\boost_1_48_0\stage\lib -LE:\Programming\Python\libs -lboost_python-mgw45-mt-1_48 -lpython27 -Wl,--out-implib,libpyhello.a
Creating library file: libpyhello.a
build\hello.o:hello.cpp:(.text+0x20): undefined reference to `_imp___ZN5boost6python6detail11init_moduleEPKcPFvvE'
Run Code Online (Sandbox Code Playgroud)
使用boost :: python也有类似的4个未定义的错误.
我的构建boost命令行: bjam toolset=gcc variant=release
我在谷歌中找到了类似的麻烦(也在stackoverflow上),但在我的情况下没有找到答案.
问题2 - 使用模块(linux)
在linux平台上我对构建模块没有任何问题,同样的源编译得很好:
g++ -o build/hello.os -c -fPIC -I/usr/include/python2.7 src/hello.cpp
g++ -o libpyhello.so -shared build/hello.os -lboost_python -lpython2.7
Run Code Online (Sandbox Code Playgroud)
现在,我该如何使用它?在文档中没有关于模块命名的文字,引用:
可以通过编写Boost.Python包装器来暴露给Python: …
我格式化字符串(在重载运算符str),我不想使用原始\n或\ r \n标记.在C++中有像std :: endl这样的python跨平台换行符标识符吗?
我试图谷歌,但没有找到答案.
所以,我的密钥和证书文件正在使用CURL没有问题.
curl -k --key key --cert cert --url myurl
Run Code Online (Sandbox Code Playgroud)
没问题.如果测试连接与openssl s_client我错误19链中的自签名证书.
openssl s_client -key key -cert cert -connect myurl:443
Run Code Online (Sandbox Code Playgroud)
因此,似乎openssl必须有替代选项'-k'的curl,这意味着不安全,允许连接到没有证书(H)的SSL站点.有人知道吗?
我正在使用Poco C++库并导致奇怪的问题.Poco使用自己的共享指针类SharedPtr
进行内部指针操作.在我的情况下,静态对象Poco::SSLManager
具有SharedPtr
证书Handlers对象的成员.当程序运行结束时,静态对象被删除,我抓住了分段错误.使用GDB调试器,我看到核心转储,不明白问题.删除SharedPtr
对象时发生Seg错误(简单操作:) delete pObj
,但对象具有有效地址,例如 - 0x8fcbed8
.
为什么删除带有效地址的指针会导致分段错误?
这可能是因为对象在应用程序的fork副本中创建并在main中销毁?
我需要更改 lua 脚本中的当前工作目录以执行特定操作,但是我在执行此简单任务时遇到了麻烦。我写测试脚本 test.lua :
os.execute("cd /usr")
os.execute("ls")
Run Code Online (Sandbox Code Playgroud)
但是 lua test.lua 输出是:
test.lua
Run Code Online (Sandbox Code Playgroud)
当前目录不会改变。怎么了?而且我不能使用 LFS 或任何非标准模块。
感谢所有人解释它的情况。我选择另一种方式:在运行 lua 脚本之前更改工作目录,但是我在脚本和脚本中使用的路径有很多麻烦。