ラベル mac の投稿を表示しています。 すべての投稿を表示
ラベル mac の投稿を表示しています。 すべての投稿を表示

2017年8月8日火曜日

linker command failed with exit code 1が出た時の解決方法案

どうも、俺です。

Xcodeで開発してて目にすると1時間はその解決に費やしてしまうこともある地獄のエラー文言。
そう、それが
linker command failed with exit code 1


※Xcode 8.3.3

今日はこのエラーが出た時「これやったら直った」というあらゆる手段をお伝えします。


■プロビジョニングプロファイルは正しく設定されているか

人により設定方法は様々ですが、僕の場合、
・General>SigningにあるAutomatically manage signingのチェックをはずす

・Build Settings内、
 ProvisioningProfile (Deprecated)とProvisioning Profileの2箇所に適切なプロビジョニングプロファイルを設定。
 Code Signing Identityに正しい証明書を設定。
 最後にDevelopment Teamにチーム名を設定。

としています。
このミスの際は、ちゃんと「プロビジョニングプロファイル間違えているよ」というエラーが出ることが多い...。


■Enable Bitcodeの設定を間違えていないか

Build Settings>Build Options内にあるEnable Bitcodeが「Yes」になっているとアカン場合がある。
組み込んだフレームワークがbitcodeとやらに対応していないかもしれないので、速攻「No」に設定し直す。




■存在しないリソース(画像etc)を取り入れようとしていないか

Build Phases>Copy Bundle Resources内に存在しないリソースがないか要チェック。
無いものが含まれている場合は削除します。



■Deployment Targetを間違えていないか

General>Deployment InfoにあるDeployment Targetに無茶な値を入れていないか。
古すぎるターゲットなどに設定している場合は、よく考えて適切な値にします。



■Info.plistの設定Target Membershipは大丈夫か

Info.plistを選択してTarget Membershipにチェックが入っているとアウト。
チェックを外します。



■Xcodeを再起動しよう

この方法を使うと90%の確率でビルドが成功します。
試してみる価値あり。



■Mac本体ごと再起動しよう

この方法を使うと50%の確率でビルドが成功します。
試してみる価値あり。




上記以外でこのエラーの対処方法があれば教えてください。


※※※2017.08.18追記
このエラーが出た時に詳細ログが見れないのでモヤモヤしてたのですが、ログを見る方法が分かりました!
command+8 !!
LogNavigatorというやつらしいです!
これで具体的にエラー内容確認できます!


以上でぇぇぇぇす。

2017年5月1日月曜日

Macでgem installしたら "Operation not permitted" エラー

どうも、俺です。

 Mac(Sierra)でターミナルから
$ sudo gem install XXXX

とコマンドを打つと
Password:
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/XXXX
というエラーが出る場合の対処法。

以下のようにすればOK。
$ sudo gem install -n /usr/local/bin XXXX
これは、インストールディレクトリを
/usr/bin
から
/usr/local/bin
へ変更してインストールを行います。


MacのrootlessというSystem Integrity Protection(rootless)という機能があり、
/System
/bin
/usr
/sbin
フォルダ以下にファイルを作成できないという仕様のためです。

他にもrootlessを無効にする方法もありますが、セキュリティ的に望ましくはないので割愛します。


以上でぇぇぇぇぇす。

2014年3月28日金曜日

Macでgitサーバを構築の巻

どうも、俺@仕事中です。
今備忘録を書かないと忘れてしまうので、サボってる訳ではありません。

僕はXcodeで開発するときにgitを使ってソース管理をしています。
標準で使えるので多くの人も使っていると思います。

gitはローカルリポジトリだけでもソース管理ができますが、
今回自分でgitサーバを立てる(共有リポジトリの作成)必要があったのでメモ。


まず、ローカルリポジトリを作成します。
これはXcodeのプロジェクトを作成する際にgitリポジトリ管理とすることで勝手にXcodeがやってくれます。

Xcodeの場合はこの手順でプロジェクト新規作成の時点で、gitのイニシャルコミットまで完了します。
内部的には
git init
git add .
git commit -m "initial commit"
まで済んでる(と思います)。


次にgitサーバを作ります。
適当な場所にサーバの公開ディレクトリとなる基底フォルダ(名前も任意)を作成します。
mkdir ~/Documents/gitserver

そしてのフォルダ内に先ほど作成したXcodeプロジェクト用のディレクトリを作成し、共有リポジトリとするためののコマンドを叩きます。
ここでは仮にプロジェクト名を「TestProject」とします。
mkdir ~/Documents/gitserver/TestProject.git
cd ~/Documents/gitserver/TestProject.git
git init --bare --shared

これで共有リポジトリが出来ました。

さて、次は外部からgitプロトコルで接続するための設定です。
まず設定ファイル(git-daemon.plist)を作成します。
cd ~/Library/LaunchAgents
vim git-daemon.plist

パスは適宜変えて下さい。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
<dict>
 <key>KeepAlive</key>
 <false>
 <key>Label</key>
 <string>git-daemon</string>
 <key>ProgramArguments
<array>
  <string>git</string>
  <string>daemon</string>
  <string>--export-all</string>
  <string>--enable=receive-pack</string>
  <string>--base-path=/Users/koexuka/Documetns/gitserver</string>
 </array>
 <key>RunAtLoad</key>
 <true>
 <key>ServiceDescription</key>
 <string>git-daemon</string>
</true></false></dict>
</plist>

kikaigyo/plist - GitHub から拝借させて頂きました。


次に、gitをデーモンとして起動させるようにします。

launchctl load -w git-daemon.plist

最後にローカルリポジトリから作成した共有リポジトリを登録します。
git remote add origin git://MY_iMac/TestProject.git

My_iMacの部分は自分のMacのIPアドレスやホスト名、またはlocalhostでOKです。


これで設定は完了しましたので、あとは別のPCから

git clone git://MY_iMac/TestProject.git
が成功すれば完了です!!!


以上でぇぇぇぇぇぇす。



2013年6月23日日曜日

tmuxのCtrl+b+tの使いどころ

どうも、俺です。
 以前の記事でscreenをやめてtmuxへを書いてから、 ずっとtmuxを使い続けています。

attachやらdetachやら便利ですし、ペイン分割や移動やコピー、ペーストも使いやすいし、色んなコマンドもあってとても便利です。


1つ使いどころが分からないコマンドがありました。

Ctrl + b + t
時間表示。



その時の時間が表示されるコマンドです。
「へー、そんなコマンドもあるんや」と意識せずにいたのですが、ある時このコマンドが必要な場面に遭遇しました。

それが、一番上の画像のようにペインを複数分割した際に、
「今、俺どのペインさわってんの!?」ってなる場合があります。

一応枠線が緑色になるんですが、ペインが多いと分かりずらい。。

そんな時は迷わず

Ctrl + b + t
で、時間を表示させます。
すると、あら不思議、自分が操作しているペインが一目でわかる。


でしょ。


以上でぇぇぇえっぇす。

2012年11月23日金曜日

Androidアプリで "R cannot be resolved to a variable"エラー

どうも、俺@3連休です。
最近はAndroidアプリの開発にも手を出しております。

サーバサイドはvimでコーディング、iOSアプリはxcodeで開発してたのですが最近はもっぱらeclipseです。
eclipseの豊富な機能に圧倒されております。

さてタイトルの件ですが、Androidアプリ開発をしてるとたまに目にするエラーのようで、ググルと多くのサイトに解決方法が書いてますね。
原因はプロジェクト内のgenディレクトリ内に生成されるR.javaが消えてなくなってたり、更新されなくなってたり、ということのようです。
R.javaはリソースに関するデータを扱う自動生成されるプログラムファイルです。

なぜ消えてなくなったり、更新されなくなるのか?の部分を直してやれば解決します。
そのいくつかをご紹介します。

■解決方法
・CleanしてBuildしてやる。
・eclipseを再起動。
・eclipseを終了して、プロジェクト内のgenディレクトリをまるごと削除しeclipse起動。
・resディレクトリ以下にあるxmlファイルに記述ミスがあるので直してやる。
 →consoleにエラーログが出力されているはずなのでチェック。
・なぜか別の android.R; がインポート宣言されちゃっている。それじゃないです。
 →あったら削除。

ちなみに僕も同様の現象が発生し、そのどれを試しても直りませんでした。
ですがMacごと再起動しeclipseを立ち上げたらなぜか直りました。
超レアケースかも知れませんが、最終的には開発端末ごと再起動でなんとかなるかも知れませんよ!


以上でぇぇえぇぇす。


2012年5月17日木曜日

そうだ、macvimを使おう

どうも、俺@昼休みです。
今日は、Macのテキストエディタの一つであるmacvimを使ってみたら他のどのエディタより使いやすかった、という話です。

本家はこちら
香り屋パッチがあてられて日本語化を頑張ってくれているプロジェクトはこちら



これまでmacで使うフリーのエディタに
・CotEditor(http://sourceforge.jp/projects/coteditor/
・Fraise(http://www.macupdate.com/app/mac/33751/fraise
・mi(http://www.mimikaki.net/
・テキストエディット(プリインストール)
を使ってきましたが、どれも高機能すぎたり何かの機能が足りなかったりして
「WindowsのEmEditor最強!」と思ってました。

今回どこかの記事でmacvimについて紹介されているのを読み、導入してみました。
vimは開発でよく使うエディタでとても大好きなエディタなのですが、いつもターミナル上でvimを起動して、、という使い方しかしなかったので「MacのGUIエディタで使ってみてどうかな?」と思ってましたが、、
超使いやすい!さすがvimやでぇ!
これまで使ってきたエディタなんか比にならねぇぜ。

何が使いやすいって、
・当然ながらviのキーバインド
・当然ながらファイルエンコーディングの設定とかコマンド一発
・というか、自由に~/.gvimrcに設定に書いて自分好みの環境が作れる。書き方はvimrcとほぼ同じ

:lcd <パス>
 でカレントディレクトリを移動出来る
・というか、vimで使えるコマンドは大抵使える

:!<cmd>
でmacvim上からコマンド打てる。
:!uuencode ./% hoge.txt | mail you@example.com
で編集中のファイルを添付して誰かにメール送信とか出来ちゃう。
・vimscriptが使える
・もちろん背景色やシンタックスの設定、透明度の設定もできちゃう
・タブ機能も完備
・プリンタへ送って印刷もできる
・マウスでコピペもできる
・つまり最強
という事になります。
viやvimに慣れてる人で、「macで使えるオススメのフリーエディタないかなぁ」という人には間違いなくmacvimをオススメします。

.gvimrcの例
set number
set autoindent
set sw=4
set ts=4
set ignorecase
set incsearch
set hlsearch
set statusline=%<%f\ (%05l/%05L)\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

set laststatus=2
syntax on

set encoding=utf8
set fencs=utf8,ujis,sjis
set fileformat=unix

set transparency=5 "透明度
set lines=40 columns=180 "横幅と縦幅
colorscheme default "カラースキーム 他にもいっぱいある


以上でぇぇぇぇえす。

2012年5月11日金曜日

macでlsしたときの@(アットマーク)

どうも、俺@今から仕事です。
Mac(Tiger以上)のターミナル上で

$ ls -l
したときにファイルやディレクトリの属性に@(アットマーク)が付いている場合があります。

$ ls -l
-rw-r--r--   1 username  staff    411 12 12 17:44 hoge.txt
-rw-r--r--   1 username  staff  26945  5 11 09:39 foo.txt
-rw-r--r--@  1 username  staff   1766  5 11 09:37 fuga.txt #←こいつ!

なんだこれは?ということで調べてみると、Mac Tigerで導入されたファイルリソース(Extended Attributes)というものらしいです。
※Tigerではデフォルトで無効化されており、実質Leopardから見られる。

拡張属性というもので、Spotlightなどの検索で利用されるらしい。
特にその存在が邪魔するというともないとは思いますが、「きもい!消したい!」という人(俺)は、
1)まず確認
$ ls -l@
-rw-r--r--   1 username  staff    411 12 12 17:44 hoge.txt
-rw-r--r--   1 username  staff  26945  5 11 09:39 foo.txt
-rw-r--r--@  1 username  staff   1766  5 11 09:37 fuga.txt
        com.apple.metadata:kMDItemWhereFroms      174
        com.apple.quarantine       70
lsに-@を付けることでその詳細が確認できます。
ここにある、com.apple.metadata:kMDItemWhereFromsとcom.apple.quarantineはダウンロードしたファイルにつく属性みたい。
$ xattr -d com.apple.metadata:kMKItemWhereFroms fuga.txt
$ xattr -d com.apple.quarantine fuga.txt
これで削除できます。

以上でぇぇぇぇえぇぇぇぇえす。

2011年12月16日金曜日

screenをやめてtmuxへ

どうも、俺@残業中です。

流行りモノの好きな俺はscreenをやめてtmuxへ移行することにしました。
とは言うものの、もうだいぶ前からある仮想端末ソフトみたいですが、、^^;

色んなブログを参考にしましたが、結局インストールして使ってみて、screenとtmuxとで大きな差がある感じはしません。
何よりも重宝されるdetach&attachが両方備わってる訳ですし。
tmuxだけで言うと
・コピペのバッファを複数利用できる
・画面分割がしやすい(paneという。縦横関わらず)
・動作が軽い(メモリ消費も少ないらしい)
・旬なやつ
というメリットがあります。

ではインストール、設定めもめもです。
※僕の端末はMac OSX(lion)ですので、Mac用のインストールメモも含まれてます。

まずMacな人はXcodeをインストールします。
http://developer.apple.com/xcode/
を参考に、インストール方法については省略します。

次にMacPortsをインストールします。これはMacなエンジニアにとっては結構便利なツールです。
http://www.macports.org/index.php
から自分の環境に合ったパッケージファイルをDLし、そのdmgファイルを実行して下さい。
僕はMacPorts-2-1.0.3-10.7-Lion.dmgを落としました。
あとはインストーラに従うだけです。
インストールが完了したら、ターミナルで環境設定を編集します。
僕はzshを使っているので

$ vim ~/.zshrc
--------------------------
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MATHPATH=/opt/local/man:$MANPATH
とします。bashの人も同じですね。
設定を読み込みます。

$ source ~/.zshrc
次に設定ができたか確認します。

$ port version
Version: 2.0.3
OKです。
まずは使う前に更新を確認します。

$ sudo port selfupdate
勝手に更新してくれます。

では早速tmuxをインストールしましょう!

$ sudo port install tmux
これで勝手にインストールしてくれます。yumみたいなもんですね。
インストールが終わったら

$ tmux
と打つだけで仮想端末が立ち上がり、まるでscreenのように!!
screenと同じく
$ exit
で終了します。


$ tmux list-session
でセッション一覧が見れます。平たくdetach、attachされた端末のことです。セッション番号:ウィンドウ数や起動日時が表示されます。
セッション番号を参考にし
$ tmux attach -t セッション番号
でアタッチできます。

tmuxはデフォルトでCtrl-bがプレフィックスになっているので、何かコマンドを打つ場合はまずCtrl-bを打つことが基本です。※もちろん設定で変えられますが、僕は基本に忠実にやってます!
tmuxを起動してからは、screenと同様にウインドウ分割(pane)やコピーモードへ移行、windowの生成など色々できます。

Ctrl-b ? ショートカット一覧
Ctrl-b d デタッチ
Ctrl-b w ウィンドウ一覧
Ctrl-b c ウィンドウ生成
Ctrl-b n 次のウィンドウへ
Ctrl-b p 前のウィンドウへ
Ctrl-b : コマンドモードへ
Ctrl-b [ コピーモード開始
Ctrl-b Ctrl-Space コピーモードでのコピー開始
Ctrl-b ESC-w コピーモードでのコピー終了
Ctrl-b ] コピーデータの貼付け
Ctrl-b q ペインのインジケータ(番号?)を表示
Ctrl-b t 時計表示(いらんw)
Ctrl-b % ウインドウを左右ペインへ分割
Ctrl-b " ウインドウを上下ペインへ分割
Ctrl-b o アクティブなペインの移動(次のペインへ移動)
Ctrl-b x ペインの破棄
Ctrl-b Space ペインレイアウトの変更(左右、上下)
Ctrl-b : resize-pane -U 数字 上部ペインのサイズ変更
Ctrl-b : resize-pane -D 数字 下部ペインのサイズ変更
Ctrl-b : resize-pane -L 数字 左ペインのサイズ変更
Ctrl-b : resize-pane -R 数字 右ペインのサイズ変更
メインで使うコマンドはこのくらいでしょうか。
あとは~/.tmux.confを編集して使いやすくします。


$ vim ~/.tmux.conf
--------------------------------
# コピーモードのキーバインドをviのように
# Spaceでコピー開始、Enterでコピー終了になります
set-window-option -g mode-keys vi

# 縦分割、横分割をviのキーバインドのように
bind s split-window -v
bind v split-window -h

# 分割画面への移動をviのキーバインドのように
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
僕はこんな感じにしました。
tmuxを使ってみる-なんでもつくるとか参考になります。


さぁ、これで快適なtmuxライフを送れますね!

以上でぇぇえぇす。


2011年11月2日水曜日

macのターミナルでvimのdeleteがおかしい時

どうも、俺です。
お久しぶりです。ブログに書くようなネタがなかったのでしばらく更新できませんでした。。

今日はmacを使っててターミナルからvimを開いてdeleteキーを押すと「^?」が出る人へ、対処法メモです。


$ vim ~/.vimrc
-------------------
" 以下を追加
noremap! ^? ^H
とりあえず、.vimrcをこのようにすれば直ります!直るはずです。
^?はCtrl+vを押したあとdeleteキー。
^HはCtrl+vを押した後Ctrl+hキー。

最近はmacで仕事しております。iphoneアプリ開発とかしてるので、そのうちObjective-C関連のネタも書くようになれればいいなー。

以上でぇぇえぇす。