小编meh*_*dad的帖子

LD_LIBRARY_PATH 被 GCC 忽略

根据文档,GCC 在 LD_LIBRARY_PATH 中查找链接共享库的路径,但在我的情况下它似乎被忽略了!

echo $LD_LIBRARY_PATH--> :/home/mehrdad/usr/lib (所以LD_LIBRARY_PATH设置为当前)

libfoo.so在“ /home/mehrdad/usr/lib”但是: gcc main.c -lfoo 返回错误:

/usr/bin/ld: cannot find -lfoo
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

所以有什么问题???已LD_LIBRARY_PATH弃用???

但我可以成功链接显式命令:

gcc main.c -L/home/mehrdad/usr/lib -lfoo
Run Code Online (Sandbox Code Playgroud)

我也可以通过以下方式成功执行 a.out:

./a.out
Run Code Online (Sandbox Code Playgroud)

操作系统库加载器似乎尊重 LD_LIBRARY_PATH 但不是 GCC!

我的环境:操作系统:CentOs 7 编译器:gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)

c linux gcc

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

有多少递归函数调用会导致堆栈溢出?

我正在研究一个用 c 编写的模拟问题,我的程序的主要部分是一个递归函数。当递归深度达到大约 500000 时,似乎发生堆栈溢出。

Q1 : 我想知道这正常吗?

Q2:一般有多少递归函数调用会导致堆栈溢出?

Q3:在下面的代码中,删除局部变量neighbor可以防止堆栈溢出吗?

我的代码:

/*
 * recursive function to form Wolff Cluster(= WC)
 */
void grow_Wolff_cluster(lattic* l, Wolff* wolff, site *seed){

    /*a neighbor of site seed*/
    site* neighbor;

    /*go through all neighbors of seed*/
    for (int i = 0 ; i < neighbors ; ++i) {


        neighbor = seed->neighbors[i];

        /*add to WC according to the Wolff Algorithm*/
        if(neighbor->spin == seed->spin && neighbor->WC == -1 && ((double)rand() / RAND_MAX) < …
Run Code Online (Sandbox Code Playgroud)

c stack-overflow recursion

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

标签 统计

c ×2

gcc ×1

linux ×1

recursion ×1

stack-overflow ×1