C++ 寻找一个嵌入式系统的线性代数库(没有malloc和free)

C++ 寻找一个嵌入式系统的线性代数库(没有malloc和free),c++,c,embedded,linear-algebra,C++,C,Embedded,Linear Algebra,我过去常和微控制器打交道。我在应用程序中使用的RTOS没有free和malloc(以及其他类似assert的调用),有时它们是可用的,但我更喜欢让系统中的一切都是静态的 我已经开始使用线性代数,但大多数都需要动态内存。我的矩阵密集且“小”(不超过10x10) 我真的很喜欢Eigen(一切都可以在编译时静态决定),但显然有一个bug需要RTO不提供的断言(即使使用-DNDEBUG)。图书馆 应提供矩阵分解例程(如QR、Cholesky、LU…) 我宁愿用C代替C++。有什么建议吗? 非常感谢 重新

我过去常和微控制器打交道。我在应用程序中使用的RTOS没有free和malloc(以及其他类似assert的调用),有时它们是可用的,但我更喜欢让系统中的一切都是静态的

我已经开始使用线性代数,但大多数都需要动态内存。我的矩阵密集且“小”(不超过10x10)

我真的很喜欢Eigen(一切都可以在编译时静态决定),但显然有一个bug需要RTO不提供的断言(即使使用-DNDEBUG)。图书馆 应提供矩阵分解例程(如QR、Cholesky、LU…)

我宁愿用C代替C++。有什么建议吗?
非常感谢

重新定义assert宏似乎是一个很好的解决方案

但您甚至可以提供自己的malloc和free实现,或静态链接到适当的内存管理库:
克拉帕克有什么问题吗?或者甚至是直接的Fortran LAPACK(您可以使用gfortran编译它,gfortran是gcc的一部分)


[C] LAPACK的例程将其参数中的所有内存缓冲区都视为已分配的,并且自己不进行任何堆分配。对于除其他参数(例如,用于计算SVD的dgesdd)之外还采用“工作”缓冲区的例程,通常可以使用特殊的“仅大小”参数调用它们,并返回工作缓冲区所需的大小作为响应,然后可以按您的意愿分配

如果Q16.16定点数学适合您的应用程序,则libfixmatrix可以作为一个选项:


您使用哪种微控制器体系结构/系列,使用哪种编译器?GCC?为什么不添加自己的断言宏/头?assert只是一个宏,您可以将其定义为“无”以使其可编译。但是为了实际使用断言,除非定义了NDEBUG,否则将其定义为if(!(expr)){stop_program_however_that_is();}。感谢您的快速响应。这些架构是CortexM3/4/4F(甚至是ARM7TDMI)。我正在雇用GCC。我还将测试重新定义宏断言;为了避免库中的RAM分配错误,用户必须
allocate()
所有自己的RAM,并将其传入。啊,工作的日子。。。