2016-06-18 23 views
0

現在、私はユーティリティ共有ライブラリをインストールする簡単なプロジェクトを作成しています。私はroot権限を持っていないので、私はシステムのlibフォルダ内の共有ライブラリをインストールすることはできませんCMake共有ライブラリ実行権限がインストール場所にありません

cmake_minimum_required (VERSION 2.6) 
project(MathLibs CXX) 
add_library (${PROJECT_NAME} SHARED 
    fact.cpp 
    fibo.cpp 
    isPrime.cpp 
    ) 
install (TARGETS ${PROJECT_NAME} 
    RUNTIME DESTINATION ${PROJECT_NAME}/bin 
    LIBRARY DESTINATION ${PROJECT_NAME}/lib 
    ARCHIVE DESTINATION ${PROJECT_NAME}/lib) 

は、ここに私のCMakeListsです。私は$ HOME/appsにCMAKE_INSTALL_PREFIXを上書きします。

私はそれが実行権限を持っていた共有ライブラリを構築します。

-rw-rw-r-- 1 ameya ameya 9714 Jun 18 20:02 CMakeCache.txt 
drwxrwxr-x 5 ameya ameya 4096 Jun 18 20:02 CMakeFiles 
-rw-rw-r-- 1 ameya ameya 2701 Jun 18 20:02 cmake_install.cmake 
-rw-rw-r-- 1 ameya ameya 84 Jun 18 20:02 install_manifest.txt 
-rwxrwxr-x 1 ameya ameya 6808 Jun 18 20:02 libMathLibs.so 
-rw-rw-r-- 1 ameya ameya 7748 Jun 18 20:02 Makefile 
drwxrwxr-x 3 ameya ameya 4096 Jun 18 20:02 test 

消え実行権限をインストールした後: はここで共有ライブラリとビルドフォルダです。 ここでは、インストールフォルダの場所です:

-rw-r--r-- 1 ameya ameya 6808 Jun 18 20:02 libMathLibs.so 

私はこれを修正するためにCMakeLists.txtに行方不明です何が? Linuxのライブラリに実行する必要はありませんので、cmakeのがインストールライブラリに実行権限を設定していないこと

答えて

1

オンライン詳細を探した後、私はcmakeのバグレポートで参照thisを発見しました。

異なるシステム上の共有ライブラリの取り扱いは、私はUbuntuとFedoraのワークステーションを使用してみまし異なります。
Ubuntuシステムでは、システムにインストールされた共有ライブラリに実行可能ビットが設定されていませんが、Fedora Workstationでは同じライブラリに実行可能ビットが設定されています。

一つは、(私の以前の回答でタイプミスのため申し訳ありません)が定義CMAKE_INSTALL_SO_NO_EXEマクロを持っている$ {} CMAKE_ROOT /cmake/Modules/Platform/Linux.cmake、 を見てすることができます。

1

They said

ライブラリのアクセス許可はビルドツリーで、これらはCMakeではなくリンカーによって設定されます。

あなたには、いくつかの理由でインストールライブラリの実行権限が必要な場合、install()コマンドでPERMISSIONSオプションを使用します。

+0

@Tsyvarevに返信いただきありがとうございます。後で、私はこの共有ライブラリに実行可能なアクセス許可を追加する-DCMAKE_INSTALL_SO_EXE = OFFを使用できることを知りました。また、Debianなどの異なるプラットフォーム上の共有ライブラリの扱いに違いがあります。共有ライブラリはすべて実行可能ビットなしでインストールされますが、他の味は異なるかもしれません。 – AmeyaVS

関連する問題