LINUX.ORG.RU

Избранные сообщения aureliano15

По какой причине clang собирает pie executable вместо shared object ?

Форум — Development

Вот мой код:

$ cat library.h 
#ifndef __LIBRARY_H__
#define __LIBRARY_H__

int hello_world();

#endif // __LIBRARY_H__

$ cat library.c 
#include "library.h"

int hello_world()
{
	return 42;
}

$ cat main.c 
#include 
#include "library.h"

int main(int argc, char** argv)
{
	int res = hello_world();
	printf ("%d\n", res);
	return 0;
}

Собираю командами:

$ cat build.sh 
#!/bin/bash

clang -shared -nostdlib library.c -o library.so
clang -L ./ library.so main.c

Запускаю
LD_LIBRARY_PATH=. ./a.out

проблема в том, что
$ file library.so
library.so: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, not stripped

а должен быть не pie executable

 ,

Einstok_Fair
()

Вышла версия 0.5.0 утилиты shellcheck для проверки скриптов на bash/sh

Форум — Development

Сабж. Утилита написана на haskell'е.

Проект на гитхабе: https://github.com/koalaman/shellcheck
Скачать: https://github.com/koalaman/shellcheck/archive/v0.5.0.tar.gz

 , ,

saahriktu
()

Конспект по GNU Make

Форум — Development

Привет, я штудировал доки по Make (уже второй раз за несколько лет) и пожалел о том, что в прошлый раз не составил небольшой конспект. Оставлю здесь на случай, когда потребуется освежить память, может и ещё кто сочтёт полезным.

1.  include / -include - включить Makefile, дупускаются shell
    шаблоны. С / без ошибки при отсутствии файла. После прочтения всего
    Makefile, имена файлов, которые указаны  директиве, проверяются на
    возможность обновления рецептами. В случае обновления включаются
    заново (основа для автоматической генерации зависимостей).

2.  Secondary expansion - после чтения Makefile и перед фазой
    обновления целей, производится второй проход по списку
    пререквизитов. Доступны автоматические переменные.
        .SECONDEXPANSION:
        main_OBJS := main.o try.o test.o
        lib_OBJS := lib.o api.o
        main lib: $$($$@_OBJS)

3.  Order-only пререквизиты - цель не будет считаться устаревшей при
    выполнении рецепта такого пререквизита
        targets : normal_prereq | order_only_prereq.

4.  Переменная VPATH - пути поиска всего. Директива vpath - пути поиска
    для определённого класса файлов.

5.  .PHONY : target - цель target всегда устаревшая. Для target не
    производится поиск неявных правил.

6.  Если в качестве пререквизита -lname, то поиск библиотеки в
    следующих местах: в текущей директории, vpath и VPATH, /lib,
    /usr/lib, prefix/lib.

7.  Если существуют несколько правил с одним двоеточием для одной цели,
    то все они объединяются в одно правило. Рецепт может быть указан
    лишь однажды, если его нет, то поиск среди неявных правил.

8.  Если существуют несколько правил с двумя двоеточием для одной цели,
    то каждое правило независимо от другого. Каждое правило может иметь
    свой рецепт иначе поиск среди неявных правил. Могут выполниться все
    рецепты, ни одного не выполниться, выполниться лишь часть рецептов.

9.  target : ; пустой рецепт, не будет производиться поиск неявного
    правила.

10. Static pattern rule
       targets : target-pattern : prereq-pattern
            recipe
       ${objects} : %.o : %.c
    Часть имени соответствующая % - stem.

11. Каждая строка рецепта исполняется в своей shell (в одной есле
    .ONESHELL). Shell, которая используется, хранится в SHELL, опции в
    .SHELLFLAGS. Значение SHELL не наследуется из окружения make.
    Exit-status shell, выполняющей команду, содержится в .SHELLSTATUS.

12. В рецепте (в начале строки):
       @ - отключает печать команды (-n и --just-print всё равно
           печатают такие команды);
       + - выполнить даже если заданы -n или --just-print;
       - - игнорировать ошибки при исполнении команды.

13. В рецепте: обращение к make переменной ${var}, к shell переменной
    $${var}.

14. При рекурсивном вызове make использовать переменную ${MAKE}
       $(MAKE) -C subdir

15. [override] undefine var - удалить переменную.

16. export / unexport var [=val] - экспортировать / не экспортировать
    переменную в sub-make. Одинокий export / unexport - экспортировать
    / не экспортировать все переменные.

17. var = val - ссылка;
    var := val - обычная переменная;
    var += val - ссылка ли, зависит от типа val;
    var ?= val - присвоить значение если var не объявлена;
    var != cmd - выполнить cmd в shell;
    ${foo:.o=.c} - заменить .o в конце слов на .c;
    ${foo:%.o=%.c}

18. Иерархия переменных:
       1. объявлянные внутри Makefile с override (дальнейшая
          модификация возможно только с override);
       2. переданные через командную строку;
       3. объявленные внутри Makefile без override;
       4. из окружения, где запускается make.
    Экспортируются переменные в sub-make:
       1. из окружения, где запускается make (редактирование внутри
          Makefile не влияет);
       2. переданные через командную строку (если Makefile редактирует
          с override, то в sub-make приходит значение из командной
          строки);
       3. объявленные внутри Makefile с export.

19. MAKEFLAGS - содержит флаги переданные при запуске make +
    переменные со значениями переданными через командрую строку, но не
    содержит цели. В переменную можно добавить флаги внутри Makefile
    или в окружении, в котором запускается make).

20. MAKELEVEL - содержит целое число, которое указывает на глубину
    рекурсии. 0 для главного make.

21. MAKECMDGOALS - содержит цели заданные при запуске make.

22. Target-specific переменные
       prog : [private] CFLAGS=-g
       prog : prog.o foo.o bar.o
           recipe
     задаёт CFLAGS в рецептах для prog, prog.o, foo.o, bar.o. Если
     private стоит, то пререквизиты не наследуют CFLAGS. Если
     переменная объявлена private на глобальном уровне, то она не
     будет видна ни в одно рецепте.

23. Pattern-specific переменные
       %.o : CFLAGS=-g

24. Match-anything pattern rule (цель одинокий %). Бывают:
      1. терминальные (%::pregeq) - prereq должен существовать, не
         может быть создан посредством другого правила.
      2. иначе - правило будет рассмотрено только если нет других
         неявных правил , чья цель совпадает с искомой.

25. Last-resort default rule
      1. %::
      2. .DEFAULT:      # если рецепт не указан, то текущее правило
                          будет удалено

26. Отмена неявного правила
       %.o:%.s
    указать ту же цель и те же пререквизиты, рецепт не указывать.
    
27. Архивы:
      1. при использовании нотации со скобками ( libname(objs) ) не
         допускать параллельного запуска make (-j опция).
      2. внутри архива содержится таблица символов (__.SYMDEF), ranlib
         lib.a её обновляет. GNU ar не требует запуска вручную,
         запускает её автоматически.

28. Договорённости:
      * Каждый Makefile должен содержать
          SHELL = /bin/sh
        для избежания проблем на системах, где SHELL может быть
        унаследована из окружения.
        
      * Не плохо задать суффиксы для которых будет производиться поиск
        неявных правил
           .SUFFIXES:             # удаляет все раннее установленные
           .SUFFIXES: .c .o
           
      * ar bison cc flex install ld ldconfig lex make makeinfo ranlib
        texi2dvi yacc chgrp chmod chown mknod - вызывать через
        переменные ${AR}, ... . Для каждой переменной-команды
        переменная с опциями образуется добавлением FLAGS к имени
        (исключение - CFLAGS, YFLAGS, LFLAGS).

       * команды, которые следует использовать напраямую (без
         переменных): awk cat cmp cp diff echo egrep expr false grep
         install-info ln ls mkdir mv printf pwd rm rmdir sed sleep
         sort tar test touch tr true gzip.

       * каждый Makefile должен задавать переменные: INSTALL,
         INSTALL_PROGRAM (дефолтно ${INSTALL}), INSTALL_DATA (дефолтно
         ${INSTALL} -m 644).

       * staged install - для целей install и uninstall поддерживать
         переменную DESTDIR
            $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
            $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a

       * установка info и man страниц в цели install.

       * Разбивка install на $(PRE_INSTALL), $(POST_INSTALL),
         $(NORMAL_INSTALL). Разбивка uninstall на $(PRE_UNINSTALL),
         $(POST_UNINSTALL), $(NORMAL_UNINSTALL).

Господа, у меня вот ещё какой вопрос имеется: вот написал я какую-нибудь софтину, как мне определиться с именами файлов и всего проекта? Т.е. чтобы небыло конфликтов имён с другим софтом при make install. К тому же если сегодня конфликтов нет, то завтра у меня нет никаких гарантий, что такой софт не появится. Как тут правильно поступать? Каждый проект должен писать какие-то проверки на конфликты имён? Если так, то делает ли это автоматом autoconf+automake? cmake?

 

pavlick
()

Ищется браузер для работы со старыми железками

Форум — General

В связи с тем, что разрабы браузеров не щадя живота своего пекутся о безопасности пользователей, ищется браузер из которого еще не успели выпилить поддержку SSL 2/3. Желательно, Webkit или Blink. Не Gecko, потому что одна нужная железка палит user agent и обругивается. Кто-то скажет что можно и подменить, но нет, там это не просто так сделано, реально разметка съезжает.

Желательно, чтобы еще этот браузер понимал, что HTTP сервер некоторых железок может отдавать HTML с заголовком Content-Type=text/plain и его надо отображать как HTML, а не как текст (в старых браузерах так и было). Ну вот просто разрабы некоторых железок такие криворукие дебилы, а жить как-то надо.

Дистр - бунту 18.04. Нужен deb или ppa.

 ,

emcode
()

Хранение паролей на бумаге

Форум — Security

Всем привет! Хочу узнать, если хранить пароли на бумаге, но только без логинов, названия сайтов и.т.п и все пароли будут в одну строчку, без пробелов. Это безопасно? :) Даже если твою бумажку выкрадет хакер уровня Бог, то откуда он узнает сколько там паролей и от каких они сайтов или я не прав?

 ,

Enottt
()

В Red Hat и Fedora выявлена удалённая root-уязвимость в DHCP-клиенте

Новости — Red Hat
Группа Red Hat

Феликсом Вильгельмом, из команды «Google Security», в скрипте интеграции с NetworkManager, входящем в состав пакета dhcp-client, предлагаемого в Red Hat Enterprise Linux и Fedora, была выявлена критическая уязвимость (CVE-2018-1111), которая позволяет удалённо выполнить код с правами root.

Вот сам код

 eval "$(
   declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do
       optname=${opt%%=*}
       optname=${optname,,}
       optname=new_${optname#dhcp4_}
       optvalue=${opt#*=}
       echo "export $optname=$optvalue"
   done
   )"

Как это работает?

( читать дальше... )

>>> Подробности

 ,

Odalist
()

Дешёвый VPS под OpenVPN

Форум — Admin

Привет всем. Тема наверно уже сотню раз обсосана, но тем не менее. Нужен самый дешманский VPS какой только в принципе возможен (100 рублей/месяц было бы классно), на котором можно поднять VPN без последствий (бан от хостера). Пока в качестве вариантов рассматриваю Arubacloud, но слышал что там нужно отсылать скан паспорта, чтобы не платить лишнее, и Айхор Хостинг. В общем, жду совета.

 , , ,

Sunderland93
()

Кавычки-«ёлочки» без переключения на английскую раскладку

Форум — General

Compose+<< и Compose+>> в русской раскладке дают Б и Ю, кавычки не получаются. Пробовал добавлять к Compose-последовательностям

$ grep [«»] /usr/share/X11/locale/en_US.UTF-8/Compose 
<Multi_key> <less> <less>               : "«"   guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
<Multi_key> <greater> <greater>         : "»"   guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK


такие:

<Multi_key> <Cyrillic_BE> <Cyrillic_BE>       : "«"   guillemotleft
<Multi_key> <Cyrillic_YU> <Cyrillic_YU>       : "»"   guillemotright


(перед : - TAB, как в существующих строках) - не работает, выводятся Б и Ю.

Как лечить?

 

coldheadcleanhands
()

Мысли об извращениях в сфере десктопа

Форум — Desktop

У меня есть старинный комп Pentium 4 с 512 Mb оперативной памяти. На нём стоит windows xp. И всё прекрасно работает и даже не тормозит. Объясните мне как ну как чёрт побери можно называть прогрессом то что происходит в области разработки десктопов если современному ПО 5 гигабайт оперативы и многоядерных процессоров недостаточно что бы в компе не было тормозов ничего не дёргалось и не подвисало?????? Возникает такое ощущение что начало 2000-х было золотой эпохой десктопов когда они просто работали, не тормозили, не зависали и при этом были удобны в использовании, не выглядели уродливо. И заметьте, я лично не застал то время и это не стариковское мнение в стиле «в юности и трава была зеленее...». Совершенно объективное мнение. То что происходит в сфере разработки десктопов это просто отвратительно. Почему то никому не приходит в голову сделать автомобиль весом в 100 тонн пожирающий 500 литров бензина на 100 км и называть это прогрессом. Ни в одной другой сфере разработчики не могут позволить себе так извращаться, ни в одной кроме мать их дестопных говноразработчиков!!!

 

iluha16
()

Просмотр веб-архивов MHT в браузере

Форум — Development

Аддон UnMHT помер, других средств просмотра MHT в новом Firefox Quantum нет (и, возможно, не будет), так что вот:

https://github.com/opennota/unmht

На моих файлах работает. Принимаю баг-репорты.

 

opennota
()

Защита ip6

Форум — Admin

В связи последними событиями включили на раутере ип6, где родной, где 6то4 и т.д. И вот интересно, раньше НАТ давал доп.защиту для локальных устройств. А чем достигается доп. защита теперь ? Только фиреваллами локальных устройств что ли ?

 

mx__
()

Посоветуйте толковые книги на русском/английском по Си++ (Cxx11)

Форум — Development

Посоветуйте толковые книги на русском/английском по Си++.
Чтобы был нормальный перевод и содержание.
У меня где-то лежит каталог с O'Reilly, надо бы посмотреть среди них. Ещё что-то брал по акции «книга за 1 рубль» в books.ru

В двух словах - я старпёр, который изучал Си/Си++ в 1996-1997 году по книжкам:
* В.В.Подбельский Язык Си++ (Финансы и статистика)
* Беляков М.И., Рабовер Ю.И., Фридман А.Л. Мобильная операционная система
* немного смотрел русский перевод Керниган-Ритчи в бумажном виде в библиотеке когда интернетов не было, а свою книгу купить - стипендия не позволяла
* в 2004-2005 году читал книгу Страуструп Б. Дизайн и эволюция С++

Все эти книги читал в бумажном варианте.

По работе писал только на Си с классами и на Паскале с классами (+Делфи). Сейчас хотел бы по-изучать Си++, чтобы понимать современный код. Какие книги посоветуете? Интересует компактное изложение фундаментальных основ, желательно - на русском языке. Или что-то не очень тяжёлое на английском (чтобы не надо было переводить каждое слово со словариком). Надеюсь, понятно объяснил. Спасибо.

Просто я встретил на днях код вида

A::B::C::D ...
, и понял, что пора догонять поезд. На университетских знаниях 20-летней давности сейчас делать почти нечего. Хочу перестать заниматься быдлокодерством, и начать осваивать современные знания.

Ещё - есть ли краткая табличка с основными различиями в стандартах (Comparison table/list)? Или лучше просто прочитать для начала Wikipidia:C++11, и составлять такую таблицу самому?

За что браться не следует однозначно новичку, что освоить для быстрого JFF-эффекта, если хорошо знал в своё время Си с классами? Нравится концепция namespaces. Ещё хотелось бы впоследствии плавный переход на какую-то функциональщину, чтобы знания по современному Си++ пригодились. Какие концепции/подходы есть общие?

 ,

Mirage1_
()

Посоветуйте графических библиотек для embedded

Форум — Development

Сейчас в расте туго с графическими библиотеками для микроконтроллеров, и я пытаюсь систематизировать, что надо написать. Подскажите пожалуйста, что есть в природе, что можно было бы взять за основу. В первую очередь, под мелкие дисплеи типа OLED 128*64 spi/i2c. Интересуют эти направления:

1. Что-то низкоуровневое, типа u8g2 (рисование текстов и базовых примитивов).
2. Рисование менюшек
3. Рисование графиков (особо не надо, но посмотрел бы что-то простенькое)

Если что-то забыл - добавьте по вкусу, что еще надо для типичных микроконтроллерных применений.

 ,

Vit
()

Samsung хочет устанавливать полноценный линукс на свои смартфоны

Форум — Talks

Компания Самсунг выразила желание устанавливать на свои устройства linux, чтобы пользователи могли раскрыть весь потенциал их смартфонов и планшетов. На такой смартфон можно будет установить полноценный дистрибутив линукс и прочие консольные приложения.
Что подразумевается под этим не совсем ясно, но это, как минимум, полноценное ядро со всем подразумевающимся функционалом.
Пока такое новшество будет лишь на линейке смартфонов Galaxy. По сути, обладатели топовых устройств получат лишний приятный функционал, который никак не будет мешать им пользоваться телефоном.
Для того чтобы узнать желания пользователей, Samsung разместил на специальном сайте петицию-исследование, которую необходимо подписать, чтобы samsung услышал ваш голос - подтвердить, что вам действительно это нужно.

Подписать петицию

Перемещено jollheef из android

 , ,

darkenshvein
()

Невозможно исправить ошибки, у вас отложены (held) битые пакеты

Форум — General

Удалил mySQL server (скорее всего криво) После чего хотел установить новый Выдает ошибку Пакеты, имеющие неудовлетворённые зависимости: mysql-server : Зависит: mysql-server-5.7 но он не будет установлен E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

Host: igorPK Kernel: 4.10.0-38-generic x86_64 (64 bit) Desktop: Cinnamon 3.6.6 Distro: Linux Mint 18.3 Sylvia

 , ,

booratina
()

vpn не слушает порт

Форум — Security

После настройки, генерации ключей и запуска openvpn нет вывода команды
netstat -tulpn | grep vpn
А должно быть:

udp   0   0 0.0.0.0:16122 0.0.0.0*      484/openvpn
Где может быть проблема?

P.s. Настраиваю сама впервый раз. vpn на vps.

 , ,

OlyaD
()

Есть ли смысл использовать google DNS вместо провайдерских ?

Форум — General

Сабж ?

 

Jopich1
()

Прокси для браузера из связки SSH + Putty тормозит

Форум — Security

Есть несколько прокси настроенных одинаково, до них примерно по ping по 60-80 мс. скорость серверов по тестам НЕ падает ниже 5 Мбит/с в обе стороны. Все сервера используются как прокси для браузера в связке SSH + Putty (туннель через SSH). Один из серверов жутко медленно открывает страницы, от 6-25 сек. Другие сервера открывают по 1-3 сек. На серверах кроме SSH ничего не запущено. Почему могут быть такие тормоза?

настройки что менялись:

- в resolv.conf прописывались DNS сервера Googl'a 8.8.8.8 и самого провайдера VPS. без изменений, все тормозит. Сервера менялись я проверяла.

- в sshd_config прописывались:

X11Forwarding no
UseDNS no
у кого-то от этого стало работать быстрее но у меня нет.

При всем этом просто консоль в Putty работает нормально, быстро открывается и быстро вводятся и получаются ответы на введенные команды.

Из-за чего страницы могут так сильно тормозить, где еще какой параметр поменять чтобы попробовать ускорить открытие страниц в браузере?

 , , , ,

AnastasiaM
()

А надо ли вообще создавать разделы на дисках в виртуальных машинах?

Форум — Admin

Сижу сейчас выдаю диск на шлюзе под /var/log и задумался, а точно ли надо на этих дисках разделы создавать?

 ,

targitaj
()

Плагин для управления сессией Firefox?

Форум — General

Суть проблемы вот в чём. Бывает, когда занимаюсь активно сёрфингом в процессе работы. И например открыто достаточно много вкладок по направлению решению определённой задачи. Потом допустим хочется отвлечься и там другая группа вкладок по хобби например. Есть третья группа вкладок, там например трек заказы посылок, какая-нибудь фигня по дому и разные дела в реале. Ну и конечно ещё ютуб может быть открыт и непонятно что.
Ну например, разношу я их по разным окнам браузера, чтобы не было путаницы. Но тогда появляется куча куча окошек, либо одно сгруппированное с неудобным доступ. Да и на производительности это сказывается отрицательно весьма.
Сидеть закрывать вкладки, добавляя в закладки (где они мне не нужны на постоянку), засирать их и делать большое количество движений не хочется. Хотелось бы плагин, чтобы я мог закрыть окно с группой вкладок (дав название оптимально), а потом в любой момент её восстановить. И так можно было сделать несколько групп.
Например, когда нужно сконцентрироваться - оставил только важное, остальные группы убрал. Потом решил проверить треки/ютубчик/ответы где-нибкдь - открыл ту сессию, и окно с вкладками восстановилось.
Кто-нибудь знает такой плагин?

 , ,

fehhner
()