在目录上cp -rvf dir .复制符号链接而不是实际内容.src被复制到module/hal/
.
|-- comm
| `-- alchemist.c
|-- module
| `-- hal
| `-- src
| `-- comm -> ../comm
`-- src
`-- comm -> ../comm
Run Code Online (Sandbox Code Playgroud) 我有一个软件堆栈,可以创建一些中间文件作为构建过程的一部分.出现了一些问题,构建中断了.我想看看那些中间生成的文件.令我惊讶的是,这些文件正在作为构建过程的一部分被删除.
Removing intermediate files...
rm fact_test_without_proxies.c fact_test_main.c fact_test_without_proxies.o
Run Code Online (Sandbox Code Playgroud)
我浏览了Makefiles我没有看到删除它们的任何明确规则.可以有任何隐式规则来删除中间文件.如果是,我如何禁用这些隐式规则?
Removing intermediate files...只有在使用--debug选项执行make时才会看到打印.
skmt@tux:~/coding/factorial/ut$ make --debug
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
Reading makefiles...
Updating goal targets....
File `check' does not exist.
File `test_dept_run' does not exist.
File `fact_test' does not exist.
File `fact_using_proxies.o' does …Run Code Online (Sandbox Code Playgroud) 有关C/C++模板基本代码生成器的任何建议,专门用于生成重复代码生成?(不是基于UML/MATLAB模型或其他高级的东西).对于这个领域的新手任何好的通用教程(不是基于工具)?
我遇到了GNU Autogen看起来不错,但看起来它需要一个陡峭的学习曲线.我更喜欢一些像Eclipse这样的eclipse插件,易于使用,最重要的是很好的教程.
我需要在程序的执行周期中使用不同的动态库.看着dlfcn.h我认为这是可能的.我承认没有阅读很多关于动态库加载的文献.
好的,这就是我做的 -
一切都很好,直到这里.
有人可以解释为什么这个分段错误?
我注意到即使我删除libdynamicTest.so.1程序仍然执行,安静奇怪.
SysTrace(("opening dynamic library"));
handle = dlopen("libdynamicTest.so.1",RTLD_LAZY);
fn = dlsym (handle,"dylib_print_msg");
SysTrace(("Using dynamic library"));
if(!fn)
{
printf("unknown dylib_print_msg..!!\n");
}
else
{
(*fn)();
}
ret = dlclose(handle);
SysTrace(("closed dynamic library status = [%s]", (ret==0?"OK":"NOK")));
Run Code Online (Sandbox Code Playgroud)
PS我不是试图修改任何现有程序的行为,也不构成任何威胁.我正在进行可行性检查以将集成测试作为共享库运行.
编辑
我尝试使用gdb,以下是堆栈跟踪,当发生故障时.
Program received signal SIGSEGV, Segmentation fault.
0x0000003e92408b7b in check_match.8509 () from /lib64/ld-linux-x86-64.so.2
#0 0x0000003e92408b7b in check_match.8509 ()
from /lib64/ld-linux-x86-64.so.2
#1 0x0000003e92409024 in do_lookup_x …Run Code Online (Sandbox Code Playgroud) 这已经在我的列表中待了很长时间.简而言之 - 我需要mocked_dummy()在dummy() ON RUN-TIME的位置运行,而无需修改factorial().我不关心软件的切入点.我可以添加任意数量的附加功能(但不能修改其中的代码/*---- do not modify ----*/).
我为什么需要这个?
对一些传统C模块进行单元测试.我知道有很多可用的工具,但如果可以运行时模拟我可以改变我的UT方法(添加可重用的组件)让我的生活更轻松:).
平台/环境?
Linux,ARM,gcc.
我正在尝试的方法?
dummy()用非法指令替换代码段,并作为紧接的下一条指令返回.mocked_dummy()传递函数的地址(从映射文件中读取).从这里开始存在问题.我还发现这种方法很繁琐,需要大量的编码,有些也在组装中.
我还发现,在gcc下,每个函数调用都可以被挂钩/检测,但同样不是很有用,因为该函数是用来模拟的,无论如何都会被执行.
我还能使用其他方法吗?
#include <stdio.h>
#include <stdlib.h>
void mocked_dummy(void)
{
printf("__%s__()\n",__func__);
}
/*---- do not modify ----*/
void dummy(void)
{
printf("__%s__()\n",__func__);
}
int factorial(int num)
{
int fact = 1;
printf("__%s__()\n",__func__);
while (num > 1)
{
fact *= num;
num--;
} …Run Code Online (Sandbox Code Playgroud) 这应该很简单,但我不知道它.我在Linux下拥有超过4GB的大型代码库.在构建期间生成一些头文件和xml文件(使用gnu make).如果重要,头文件是基于xml文件生成的.
我想在头文件中搜索一个关键字,该关键字是在时间实例(我的开始编译时间)之后最后修改的,以及类似的xml文件,但是单独的grep查询.
如果我在所有可能的头文件或xml文件上运行它,则需要花费很多时间.只有那些自动生成的.此外,搜索必须是递归的,因为有很多目录和子目录.
有没有办法让软件构建/编译更快?我们有一个构建树c,c ++使用makefile,接近2小时进行新构建.我遇到过几个商业解决方案,比如ElectricAccelerator,Sparkbuild,有没有相应的开源资源?
我正在尝试找出基于 yocto 的项目的工作流程。目前,我已经为我拉取的每个元层创建了一个带有子模块的 git。https://github.com/shrkamat/rpi/tree/thud
这意味着当我转移到新的 yocto 版本(比如战士)时,我需要创建新的 git 分支并移动所有子模块以跟踪新的租赁分支。有没有更好的方法,这里有什么最佳实践吗?
我正在尝试制作一些 consteval 函数的模板化版本,我不清楚这里是否有任何限制。
template <typename T>
consteval T max(const T& a, const T& b) {
return (a > b) ? a : b;
}
template <typename T>
consteval T mid(const T& a, const T& b, const T& c) {
T m = max(max(a, b), c);
if (m == a)
return max(b, c);
if (m == b)
return max(a, c);
return max(a, b);
}
consteval int imax(const int& a, const int& b) {
return (a > b) ? a : b; …Run Code Online (Sandbox Code Playgroud)