我可以使用git clone后出现的文件吗?

时间:2014-08-24 08:43:44

标签: openssl makefile git-clone

我试图理解制作问题,而且我不确定发生了什么。我不确定我是否遇到过make或者问题git的问题。

如果我执行:

$ git clone git://git.openssl.org/openssl.git openssl-git

然后我得到了似乎是OpenSSL的源文件:

$ cd openssl-git
$ ls
ACKNOWLEDGMENTS INSTALL.VMS     README          demos       os2
CHANGES         INSTALL.W32     README.ASN1     doc         perl
CHANGES.SSLeay  INSTALL.W64     README.ECC      e_os.h      shlib
Configure       INSTALL.WCE     README.ENGINE   e_os2.h     ssl
...

当我下载OpenSSL tarball并解压缩时,这些文件看起来与正好

这些文件是否可用?我不允许对他们执行make吗?


我提出这样一个简单问题的原因是:我打开Configure,修改其中一个配置行,然后执行clean,configure和make。随后失败。当我问起这件事时,我告诉我没有正确使用git。

以下是有人告诉我make是可以的,而且我使用git不正确(来自OpenSSL Testing邮件列表):openssl-dev, link error [heartbeat_test] Error 2

以下是有人告诉我,我使用git不正确(来自Stack Overflow):Why does deleting a conflicted file break a project?

注意:我在两个问题中都遇到了同样的问题,除了这个问题使用了新的克隆。


# Standard checkout
git clone git://git.openssl.org/openssl.git openssl-git
cd openssl-git

# This is a false start. A config is needed to create a Makefile
export KERNEL_BITS=64
./config

# Clean up developer checked-in cruft
make clean && make dclean
# Open Configure, find debug-darwin64-x86_64-cc, change -g2 to -g3

./Configure debug-darwin64-x86_64-cc no-ssl2 enable-ec_nistp_64_gcc_128
make depend
make

...
duplicate symbol _main in:
    heartbeat_test.o
    testutil.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [link_app.] Error 1
make[1]: *** [heartbeat_test] Error 2
make: *** [build_tests] Error 1

我也可以使用相同的结果将./Configure debug-darwin64-x86_64-cc no-ssl2 enable-ec_nistp_64_gcc_128更改为./config no-ssl2 enable-ec_nistp_64_gcc_128export KERNEL_BITS=64确保我获得64位Darwin配置(darwin64-x86_64-cc)。

2 个答案:

答案 0 :(得分:1)

您应该可以使用该克隆执行make

但请注意,INSTALL建议直接使用./config而不是Configure
您可以修改Configure,但之后应该./config,而不是./Configure(除非您想手动为操作系统配置OpenSSL)。

答案 1 :(得分:1)

你是对的,问题不在于你使用Git,而是因为OpenSSL Makefiles。问题是make dclean删除了所需的文件。运行make dclean后,git status会直接显示test/目录中的某些C文件已被删除。删除这些文件后,将其恢复足以使其正常工作:

git checkout -- 'test/*.c'

让人们失望的是你正在以通常不建议使用Git的方式使用Git(但实际上可能是常用的),以及容易导致非常类似问题的方式。就像你在这里的评论中所做的那样,向他人展示问题不在于Git的简单方法是以不依赖于任何可疑的Git命令的方式解释真正的问题。在您的问题中,您已经显示了导致错误消息的确切命令,可以在git clone之后直接运行而无需任何进一步的用户输入。我怀疑如果你在那里做了同样的事情,你会得到更多有用的答案。