小编Ale*_*dro的帖子

启用"软件集".RedHat开发人员工具集

我刚刚发现RedHat提供了这个"开发人员工具集",它允许我安装(当然还有)最新的gcc-4.7.2.我在Centos上使用它,但过程是一样的.

安装后,您可以通过发出以下命令启用此工具集的新bash会话:

scl enable devtoolset-1.1 bash
Run Code Online (Sandbox Code Playgroud)

这很好用.现在,我可以以某种方式将此添加到我的bashrc中,因为这实际上启动了一个新的bash会话吗?或者我应该更好地将它放在我的makefile中,以避免开始新的bash会话.有没有办法在makefile中发出这个?

redhat makefile centos devtoolset redhat-dts

10
推荐指数
1
解决办法
4460
查看次数

/lib/i386-linux-gnu/libc.so.6,/lib/x86_64-linux-gnu/libc.so.6和/usr/lib/x86_64-linux-gnu/libc.so有什么区别?

我在我的Linux Mint 14 Nadia中安装了Matlab(uname -a显示:Linux Ideapad-Z570 3.5.0-17-generic#28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux)当从命令行调用它时,我会得到:"/ lib64/libc.so not found".

我通过在/ lib64中创建链接来遵循mathworks的帮助:

ln -s /lib/x86_64-linux-gnu/libc.so.6 .
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题.

现在,如果我找到这个库,我得到:

locate "libc.so"
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6
/usr/lib/x86_64-linux-gnu/libc.so
Run Code Online (Sandbox Code Playgroud)

我将在这台计算机上使用gcc进行编译,我希望能有完整的64位编译.拥有所有这些不同的libc.so库到底意味着什么?gnu编译器将使用哪一个?我需要做什么不同的gcc编译64位?

我也想尽可能地为我的新i7核心进行优化!

64-bit gcc libc

8
推荐指数
1
解决办法
8856
查看次数

特征:从C++数组有效实现矩阵

是否可以实现一个接收C风格指针作为模板参数的类,并以某种方式解析为静态特征矩阵,但使用提供的内存?说声明看起来像:

EIGEN_ALIGN16 double array[9];
CMatrix<double,3,3,array> :: m;
Run Code Online (Sandbox Code Playgroud)

我确实知道地图,但我提供的示例代码证明,与静态特征矩阵相比,它们慢了20%.

这些将是前提:

  • 我需要提供自己的C指针.这样我就可以有效地重用C代码而不会产生副本.
  • 生成的矩阵应该看起来是静态的,因此Eigen可以像编译时的静态数组那样进行优化.看看我上面的例子,在编译时我会提供矩阵大小(静态)和C指针.
  • CMatrix 应该回归到 Eigen :: Matrix.当没有提供C数组的附加模板参数时,我将获得正常的特征矩阵.
  • 我不打算做一个完整的Eigen扩展.我的意思是我不关心所有类型的检查,为其他用户提供一个整洁的扩展.我只想要解决这个问题的最有效方法

是否可以通过添加新的构造函数来实现解决方案?说出类似的话:

EIGEN_ALIGN16 double data[9];
Eigen::Matrix<double,3,3> m(data); //where data is NOT copied but used to replace the static allocation used by default.
Run Code Online (Sandbox Code Playgroud)

在下面找到我的代码,用于对地图与矩阵效率进 它是自包含的,您可以编译:

g++ -Ofast -DNDEBUG -DEIGEN_NO_MALLOC -I/path_to_my_Eigen benchmark1.cpp -o benchmark1 -lrt
Run Code Online (Sandbox Code Playgroud)

这是代码:

#include <Eigen/Eigen>
#include <bench/BenchTimer.h>

#include <iostream>

using namespace Eigen;
using namespace std;

//#define CLASSIC_METHOD
#define USE_MAPS

EIGEN_DONT_INLINE void classic(double VO[4], double AT[4][4], double VI[4])
{ …
Run Code Online (Sandbox Code Playgroud)

c++ arrays matrix eigen eigen3

5
推荐指数
1
解决办法
1488
查看次数

Emacs Magit:我怎样才能看到给定分支和未分阶段变化之间的差异?

使用git,我可以看到文件相对于任何其他过去提交的差异:

git diff commit file_name
Run Code Online (Sandbox Code Playgroud)

这显示file_name了版本commit与我当前的非暂停更改之间的差异.

使用Magit,我可以.在日志中选择一个给定的提交,并将其与另一个提交进行比较=.但是,我没有看到日志中的未分级更改,那么如何选择它们进行比较呢?

先感谢您.

emacs magit

3
推荐指数
1
解决办法
1451
查看次数

部分专业化与继承.我可以避免继承吗?

我正在编写一个矢量类,我希望它具有以下特征:

  1. 尽可能在堆栈上使用静态分配(以避免为了提高效率而调用new).
  2. 如果用户更喜欢提供先前分配的数组,则能够从指针实例化.
  3. 该类需要轻松转换为简单的指针.这允许在C中使用以前编写的例程.

通过我提出的解决方案在下面找到这个简单的测试问题.我使用继承,因此Vector继承自Vector_base,它为所有向量提供了一个通用接口(纯虚拟).然后我定义了一个空类Vector,允许我使用部分特化来拥有不同的存储方案; 静态或动态.

这背后的想法是我只想让vector成为旧式静态数组的C++包装器.

我喜欢下面的实现.我想保留我想出的主界面.

我不喜欢的是sizeof(Vector3)= 32,当在C中时,三个双精度的矢量是24个字节.原因是虚拟表的额外8个字节.

我的问题:我可以以某种方式提出另一种设计,它将为我提供相同的接口,但矢量只有24个字节?

总结:

  1. 我想要一个24字节的Vector3,就像在C中一样.
  2. 我仍然想拥有任意大的矢量(有<double,n>)
  3. 我想保留main()中使用的接口.

我可以使用像特征或政策这样的编程习语吗?我是新手,我不知道他们是否能提供解决方案.

找到我的小测试代码如下:

#include <iostream>
using namespace std;

#define TRACE0(a) cout << #a << endl; a;
#define TRACE1(a) cout << #a "=[" << a << "]" << endl;

enum alloc_type {Static,Dynamic};

template <class T>
class Vector_base{
public:
  Vector_base(){}
  virtual operator T*() = 0;
  virtual T operator[](int i)const = 0;
  virtual T& operator[](int i) = 0;
  virtual int size() const = 0;
  friend ostream& operator<<(ostream …
Run Code Online (Sandbox Code Playgroud)

c++ templates partial-specialization traits c++11

1
推荐指数
1
解决办法
319
查看次数