小编Ale*_*lex的帖子

llvm/clang编译错误,内存耗尽

我正在尝试在我的ubuntu 14.04 vm上构建最新的llvm/clang代码,该代码具有2GB内存.

我所做的是一个正常的配置/ make过程,没有这两个命令的任何参数.

最后,我有以下错误:

llvm [4]:链接Debug + Asserts可执行clang
/usr/bin/ld:无法设置动态节大小:内存耗尽
collect2:错误:ld返回1退出状态
make [4]:***[/ home/alex /下载/ llvm_build/Debug + Asserts/bin/clang]错误1
make [4]:离开目录/home/alex/Downloads/llvm_build/tools/clang/tools/driver' make[3]: *** [driver/.makeall] Error 2 make[3]: Leaving directory/ home/alex/Downloads/llvm_build/tools/clang/tools'make
[2]:* [all] Error 1
make [2 ]:离开目录/home/alex/Downloads/llvm_build/tools/clang' make[1]: *** [clang/.makeall] Error 2 make[1]: Leaving directory/ home/alex/Downloads/llvm_build/tools'make
:***[all]错误1

有谁知道如何解决这个问题?

clang

23
推荐指数
2
解决办法
9323
查看次数

把一颗星放在寄存器前是什么意思?

我正在研究c ++如何通过汇编语言调用正确的成员函数.我带来的简单程序如下:

class A                        
{                              
    public:                    
        virtual void show() {} 
};                             

class B : public A             
{                              
    public:                    
        void show() {}         
};                             


int main()                     
{                              
    A* pA = new B;             
    pA->show();                

    return 0;                  
}                              
Run Code Online (Sandbox Code Playgroud)

其装配如下:

main:
.LFB2:
    .cfi_startproc
    .cfi_personality 0x3,__gxx_personality_v0
    pushq   %rbp
    .cfi_def_cfa_offset 16
    movq    %rsp, %rbp
    .cfi_offset 6, -16
    .cfi_def_cfa_register 6
    pushq   %rbx
    subq    $24, %rsp
    movl    $8, %edi
    .cfi_offset 3, -24
    call    _Znwm            <<<================ 1
    movq    %rax, %rbx
    movq    %rbx, %rax
    movq    %rax, %rdi
    call    _ZN1BC1Ev
.L11:
    movq …
Run Code Online (Sandbox Code Playgroud)

assembly

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

在vim中为cscope输出带来颜色?

我正在使用vim7.4.vim中的cscope输出都是白色的.可以变得更加丰富多彩吗?

我试过cecscope,它使用quickfix为vim带来颜色.但它的输出并不是小屏幕友好的.使用笔记本电脑时没用.

那么还有其他一些方法可以为cscope输出添加颜色吗?我喜欢vim中的ctags输出,还是cscope有相同的风格?

谢谢.

vim cscope

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

git squash在保留作者信息的同时提交

我的同事(在这里叫他约翰)和我一起工作。我们的工作分支如下所示

--o--o--o # this is develop branch
   \   o--o--o # this is John's branch
    \ /       \
     o----o--o--o--o--o--o # this is our cowork branch
      \                 /
       o--o--o--o--o--o  # this is my branch
Run Code Online (Sandbox Code Playgroud)

我们已经完成工作,并准备合并我们的同事以开发分支机构。

此时,cowork分支中有很多提交,其他开发人员预计不会看到。所以我想将那些提交压缩为一次提交。

但是在压扁(解决了一些冲突)之后,我发现所有作者信息都直接指向我,没有John的信息。

因此,我的问题是,在将这些提交合并在一起时,是否可以保留John和我的信息?

git

9
推荐指数
2
解决办法
2699
查看次数

void(**vt)()=*(void(***)())ptr; c ++中虚拟表的辅助变量

我在以下链接中找到了这种技术:http: //www.codeproject.com/Tips/90875/Displaying-vtable-when-debugging

在那里,他使用一个辅助变量

void (**vt)() = *(void (***)())ptr;
Run Code Online (Sandbox Code Playgroud)

帮助显示虚拟功能表.

但如果我把它改成

void (**vt)() = (void (**)())ptr;
Run Code Online (Sandbox Code Playgroud)

它不像以前的那样工作.

有人可以帮我解释一下这里有什么魔法吗?

c++

8
推荐指数
2
解决办法
435
查看次数

如何阻止 netty bootstrap 监听和接受新连接

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.epoll.EpollChannelOption;
import io.netty.channel.epoll.EpollEventLoopGroup;
import io.netty.channel.epoll.EpollServerSocketChannel;
import io.netty.channel.socket.SocketChannel;
import sun.misc.Signal;
import sun.misc.SignalHandler;

import java.net.InetSocketAddress;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

public class ReusePortServer {
  private final int port;
  private List<Channel> bindingChannels = new LinkedList<>();

  public ReusePortServer(int port) {
    this.port = port;
  }

  private void initSignals() {
    Signal.handle(new Signal("BUS"), new SignalHandler() {
      @Override public void handle(Signal signal) {
        System.out.println("signal arrived");
        closeChannels();
      }
    });
  }

  synchronized private void closeChannels() { …
Run Code Online (Sandbox Code Playgroud)

java netty

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

是python中的全局计数器线程安全吗?

import threading
import time


counter = 0

def increase(name):
    global counter
    i = 0
    while i < 30:
        # this for loop is for consuming cpu
        for x in xrange(100000):
            1+1
        counter += 1
        print name + " " + str(counter)
        i += 1


if __name__ == '__main__':
    threads = []
    try:
        for i in xrange(100):
           name = "Thread-" + str(i)
           t = threading.Thread( target=increase, args=(name,) )
           t.start()
           threads.append(t)
    except:
          print "Error: unable to start thread"

    for t in threads: …
Run Code Online (Sandbox Code Playgroud)

python

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

为什么gdb显示的函数地址与nm的函数地址不同?

今天,当我在linux上调试我的代码时,我突然发现gdb中的函数地址与nm显示的不同.(可执行文件是静态链接的.)

我认为他们显示的地址应该是相同的,因为它们都是逻辑地址.但今天的发现让我感到困惑.

有人知道他们与众不同的原因吗?

我写了下面这个简单的程序来说明我遇到的情况.

void fo()              
{                      
    return ;           
}                      


void foo()             
{                      
    fo();              
}                      

int add(int a, int b)  
{                      
    foo();             
    return  a + b;     
}                      

int main()             
{                      
    int a = 1;         
    int b = 2;         
    add(a, b);         

    return 0;          
}                 
Run Code Online (Sandbox Code Playgroud)

nm的输出是:

0000000000400584 T _Z2fov
0000000000400595 T _Z3addii
000000000040058a T _Z3foov
00000000004005b3 T main
Run Code Online (Sandbox Code Playgroud)

但是当我使用gdb来调试已编译的可执行文件时,将断点放在第3行.

(gdb) bt
#0  fo () at test.cpp:4
#1  0x0000000000400593 in foo () at test.cpp:9
#2  0x00000000004005a8 in add …
Run Code Online (Sandbox Code Playgroud)

linux

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

Grpc无法解析符号GreeterGrpc

我在这里链接https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld,以尝试使grpc工作。

在此处输入图片说明

这是最终的文件夹结构。

我的HelloWorldServer.java与https://github.com/grpc/grpc-java/blob/master/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java相同,除了以下包名称。

但是Intellij告诉它无法解析符号GreeterGrpc。

有人可以帮我离开这里吗?

java grpc

4
推荐指数
2
解决办法
1757
查看次数

tmux与GNU屏幕显示

我想知道tmux和GNU屏幕之间的显示差异.抱歉,我不知道如何在谷歌搜索它,所以我先问这里.

在GNU屏幕中,退出vim后,显示的vim停留在那里,未清除.但在tmux中,退出vim之后,屏幕重新粉刷,返回到我开始使用vim的原始位置.

我想知道这两种显示风格是什么.所以我可以搜索它以获取更多信息.

PS:事实上,这种差异困扰着我; 因为在tmux中,当我在vim中浏览代码时,ctlr +]和":cs find"具有很大的价值.但他们通常会提供很多物品,有时会超过我的显示器的高度.

例如,让我们为"cs find"的输出取100项.在GNU屏幕中,我可以让它显示所有100个项目并进入搜索模式并搜索我正在寻找的内容.但是在tmux中,在完成显示100个项目并进入搜索模式后,我发现输出被截断并且缺少100个项目的第一部分,这对我在ctrl +]或"cs"输出中的搜索不利找".

tmux

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

在 spring boot 2.1.1 自动配置中不调用 addInterceptors

我正在编写一个 spring-boot start,旨在为处理程序自动配置拦截器。主类如下所示:

@Configuration
@ConditionalOnWebApplication
@EnableConfigurationProperties(MetricsProperties.class)
public class MetricsConfiguration implements WebMvcConfigurer {
    private static Logger logger = LoggerFactory.getLogger(MetricsConfiguration.class);

    private final MetricsProperties metricsProperties;

    public MetricsConfiguration(MetricsProperties properties) {
        this.metricsProperties = properties;
    }

    @Bean
    @Order(0)
    public MetricsCenter createMetricsCenter() {
        MetricsCenter metricsCenter = MetricsCenter.getInstance();
        metricsCenter.init(metricsProperties);
        return metricsCenter;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        logger.error("alex add");   // the log does not appear!!
        registry.addInterceptor(new MetricsInterceptor());
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文件

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration

其中说:

如果您想保留 Spring Boot MVC 功能并添加额外的 MVC 配置(拦截器、格式化程序、视图控制器和其他功能),您可以添加您自己的 WebMvcConfigurer 类型的 @Configuration 类,但不添加 @EnableWebMvc。如果您希望提供 RequestMappingHandlerMapping、RequestMappingHandlerAdapter 或 ExceptionHandlerExceptionResolver …

interceptor spring-boot

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

Perl中的BEGIN块

在Internet上搜索,我知道BEGIN块将在编译阶段进行评估和执行.但是@INC或其他变量可以继承吗?

以下是我为测试所写的内容.目录结构如下:

|-- alexpackages
|   |-- alex1.pm
|   `-- alex2.pm
|-- foo.pl
`-- main.pl
Run Code Online (Sandbox Code Playgroud)

对于每个文件:

cat alexpackages/alex1.pm

package alex1;

sub foo()
{
    print "this is alex1::foo\n";
}

1;
Run Code Online (Sandbox Code Playgroud)

猫alexpackages/alex2.pm

package alex2;

sub foo2()
{
    print "this is is alex2::foo2\n";
}

1;
Run Code Online (Sandbox Code Playgroud)

猫foo.pl

alex1::foo();
Run Code Online (Sandbox Code Playgroud)

cat main.pl

BEGIN
{
    push(@INC, '~/programs/perl/alexpackages');
}

use strict;
use warnings;

use alex1;
use alex2;

#alex1::foo();           # 1. This works good
system("perl foo.pl");   # 2. This fails
Run Code Online (Sandbox Code Playgroud)

就像我的程序告诉@INC不适用于新的系统调用一样.在我看来,系统调用不会继承系统环境.我对吗?

我可以如何使环境变量进行以下系统调用?

perl

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

标签 统计

java ×2

assembly ×1

c++ ×1

clang ×1

cscope ×1

git ×1

grpc ×1

interceptor ×1

linux ×1

netty ×1

perl ×1

python ×1

spring-boot ×1

tmux ×1

vim ×1