小编jia*_*sun的帖子

隐式规则先决条件中的通配符

BUILT_DIR = /tmp/obj 
SRC = /source/dir  

/tmp/obj/%/builtin.o : $(SRC)/%/*.c
      gcc $^ -o $@
Run Code Online (Sandbox Code Playgroud)

但你知道:

为了应用模式规则,其目标模式必须与考虑中的文件名匹配,并且其所有先决条件(模式替换后)必须命名存在或可以创建的文件。

如果我执行make /tmp/obj/hfa/builtin.o,make 会抱怨:

make: *** No rule to make target/tmp/obj/hfa/builtin.o'。停止。`

如何修改 Makefile 以满足我的要求?

makefile

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

子线程中的 malloc 消耗了太多的虚拟内存

void * thread_client_timeout_check(void *arg)
{
    pthread_attr_t attr;size_t size;
    pthread_attr_init(&attr);
    pthread_attr_getstacksize(&attr, &size);
    printf("pthread stacksize: %d\n", size);
    malloc(1);
}
Run Code Online (Sandbox Code Playgroud)

主线程创建子线程并暂停。

int main()
{
    pthread_t pid;
    pthread_create(&pid, NULL, thread_client_timeout_check, NULL);
    pause();
}
Run Code Online (Sandbox Code Playgroud)
  1. 之前pthread_createtop virt0.3m
  2. after pthread_create, top virtis 8.3m(pthread 堆栈大小为 8m)
  3. 之后malloc(1)top virt72.3m

为什么malloc(1)54m从内核获取虚拟内存?

c linux multithreading glibc

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

标签 统计

c ×1

glibc ×1

linux ×1

makefile ×1

multithreading ×1