小编lan*_*.io的帖子

在OS X El Capitan上使用libssl编译C程序?

我有一个使用libssl的简单C程序.

在Linux上,我安装了openssl-dev包并使用以下行编译程序:

gcc test_libssl.c -o test_libssl -lcrypto -lssl
Run Code Online (Sandbox Code Playgroud)

现在我想在我的Mac上做同样的事情.同一行导致:

fatal error: 'openssl/conf.h' file not found
Run Code Online (Sandbox Code Playgroud)

我尝试用home-brew via安装openssl(openssl-dev没有用) brew install openssl

这给了我:

...
==>安装openssl
==>正在下载https://www.openssl.org/source/openssl-1.0.2a.tar.gz curl:(22)请求的URL返回错误:404 Not Found

我发现了一个没有答案的相关问题.

我也试过了

brew info openssl
Run Code Online (Sandbox Code Playgroud)

并得知这一点

这个公式只是keg.Mac OS X已经提供此软件并且并行安装另一个版本会造成各种麻烦.

Apple不赞成使用OpenSSL来支持自己的TLS和加密库

为了能够在OS X上编译libssl-C程序,我需要做什么/安装?

或者,首先是一个坏主意(鉴于上面的警告)?




更新:

我用brew安装了openssl.我不确定这是不是问题,但我更新了brew.以啤酒的建议

您应该将/ usr/local的所有权和权限更改回您的用户帐户. sudo chown -R $(whoami):admin/usr/local

并考虑到这个问题.

然后,根据@Alex Reynolds的建议,我成功编译了它

gcc test_libssl.c -o test_libssl -lssl -lcrypto -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include
Run Code Online (Sandbox Code Playgroud)

c macos homebrew gcc libssl

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

是否可以通过名称唯一标识动态导入的函数?

我用了

readelf --dyn-sym my_elf_binary | grep FUNC | grep UND
Run Code Online (Sandbox Code Playgroud)

my_elf_binary从动态符号表中.dynsym精确显示动态符号表中的动态导入函数.示例输出将是:

 [...]
 3: 00000000     0 FUNC    GLOBAL DEFAULT  UND tcsetattr@GLIBC_2.0 (3)
 4: 00000000     0 FUNC    GLOBAL DEFAULT  UND fileno@GLIBC_2.0 (3)
 5: 00000000     0 FUNC    GLOBAL DEFAULT  UND isatty@GLIBC_2.0 (3)
 6: 00000000     0 FUNC    GLOBAL DEFAULT  UND access@GLIBC_2.0 (3)
 7: 00000000     0 FUNC    GLOBAL DEFAULT  UND open64@GLIBC_2.2 (4)
 [...]
Run Code Online (Sandbox Code Playgroud)

假设与这些符号相关联的名称(例如tcsetattraccess)始终是唯一的,是否安全?或者是否有可能或合理的*),有一个动态符号表(过滤为FUNCUND),其中包含两个具有相同关联字符串的条目?

我问的原因是我正在寻找动态导入函数的唯一标识符...

*)动态链接器不会将UND FUNC具有相同名称的所有" 符号" 解析为相同的函数吗?

elf dynamic-linking dynamic-loading systems-programming

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

试图理解MATCH和WHERE中的标识符和集合

我试图了解某些标识符或表达式对应于什么类型的密码"数据结构",具体取决于它们的使用方式和位置.下面我列出了我遇到的例子.请告诉我,如果我做对了(在评论中)或我错过了什么.

MATCH (a:MYTYPE { label:'l_a' })
// a corresponds to a collection of nodes

MATCH (b:MYTYPE { label:'l_b' })
// so does b

MATCH p=(a)-[sp1:CF*]->(b)-[sp12:CF]->(c)
// p corresponds to a collection of paths
// a and b correspond to a collection of nodes 
// (or does the previous MATCH of a and b change something?)
// sp1 corresponds to a collection of collections of relationships
// sp12 corresponds to a collection of relationships
// c corresponds to a collection of …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

Windows 上的 Ansible:成为/成为用户权限/所有者问题

我想要执行一些不需要使用管理员帐户的操作。例如,克隆 git 存储库或创建文件夹。

我试过这个:

  - name: Create gogo1 directory
    win_shell: mkdir c:\tmp\gogo1
    become: yes
    become_user: vagrant
    vars:
      ansible_become_pass: vagrant
Run Code Online (Sandbox Code Playgroud)

这会创建所需的目录,但是当我以 vagrant 用户身份登录并尝试删除它时,我得到:

您需要提供管理员权限才能删除此文件夹。

用户 Vagrant 没有被授予对文件夹 gogo1 的任何权限。我还需要这样做:

  - name: Change owner of gogo1
    win_owner:
      path: c:\tmp\gogo1
      user: vagrant
      recurse: yes
Run Code Online (Sandbox Code Playgroud)


win_psexec按预期使用作品。它创建目录,为用户 vagrant 授予权限,因此我可以删除它,而不会出现上述消息提示。

- name: Create gogo2 directory
    win_psexec: 
      command: cmd /k "cd c:\tmp && mkdir gogo && exit"
      username: vagrant
      password: vagrant
Run Code Online (Sandbox Code Playgroud)

我如何使用becomebecome_user创建一个文件夹(或克隆一个 git 存储库)并为用户提供所有必要的权限和所有权(就像这样win_psexec做?

windows file-permissions ansible ansible-2.x

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

PE文件:IMAGE_DEBUG_TYPE_VC_FEATURE类型的调试目录

我使用 Visual Studio 2015 编译了一个普通的 exe。除了预期的类型 调试目录之外IMAGE_DEBUG_TYPE_CODEVIEW,我还发现了第二个类型IMAGE_DEBUG_TYPE_VC_FEATURE.

我找不到有关它包含哪些数据及其用途的信息。有人可以解释一下或向我指出解释它的来源吗?

executable debug-symbols portable-executable visual-studio visual-studio-2015

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