
Boris
12.10.2018
16:18:17
И этот inc_file.h находится по пути my_lib/include/inc_file.h
Верно?

Stanislav
12.10.2018
16:19:48

Boris
12.10.2018
16:20:35

Google

Igor
12.10.2018
16:22:05
// ./main.cpp:
#include <a.h>
int main(){return a;}
// ./CMakeLists.txt:
add_subdirectory(my_lib)
add_executable(my_exe main.cpp)
target_link_libraries(my_exe my_lib)
// ./my_lib/incl/a.h:
int a = 100;
// ./my_lib/CMakeLists.txt:
add_library(my_lib m.cpp)
target_include_directories(my_lib PUBLIC incl)
¯\_(ツ)_/¯

Boris
12.10.2018
16:22:33
Хм... на чистом проекте работает...

Stanislav
12.10.2018
16:29:38
ну это так

Fuzzytoozy
12.10.2018
16:31:35
Ребят. По какой причине может происходить такая пьянка?
warning: Corrupted shared library list: 0x9408e30 != 0x0
warning: Error reading shared library list entry at 0x42a0
warning: Error reading shared library list entry at 0x4590
warning: Corrupted shared library list: 0x9404810 != 0xffff9f5c
warning: Error reading shared library list entry at 0xfffffe40

Boris
12.10.2018
16:31:36
для header only INTERFACE а не PUBLIC :)
Что делать, если я вынес макросы в header-only сущность?
target_include_directories(my_lib PUBLIC include)
target_include_directories(my_lib INTERFACE h_only_include)
Так корректно? (не работает)

Igor
12.10.2018
16:33:20

Stanislav
12.10.2018
16:35:28

Boris
12.10.2018
16:35:50

Stanislav
12.10.2018
16:36:06

Google

Igor
12.10.2018
16:36:51

Boris
12.10.2018
16:39:25
Ой, ступил.
target_include_directories(my_lib INTERFACE .)
Добавил.
Хотя PUBLIC там тоже работает.
Только этот пример надо на реальный проект наложить, а там что-то я напутал...
Спасибо, @Artalus , @crackedmind , разобрался.

Fuzzytoozy
12.10.2018
16:48:25

Alexander
12.10.2018
16:49:19
где? что за софт? какая мб либа?
кусок кода?

Fuzzytoozy
12.10.2018
16:50:01
Мне бы понять что вообще происходит

Alexander
12.10.2018
16:50:26
ну ты хоть скажи, когда проблему ловишь

Fuzzytoozy
12.10.2018
16:51:21
Бубунта это. Основной процесс загружает либу через dlopen. Сборка 32 битная
Все стартует но падает. И в дебагере спам идёт строчек которые я прислал

Alexander
12.10.2018
16:51:51
какая прога? какая либа?

Fuzzytoozy
12.10.2018
16:52:02
Моя прога моя либа

Alexander
12.10.2018
16:52:11
glhf

Google

Fuzzytoozy
12.10.2018
16:52:45
Из за чего вообще это может быть? Есть какие-нибудь известные причины?
Я ж правильно понял что тут дело не в шаред либе а в процессе который её грузит
Это у него разметка адресов поехала в elf
Или система просто не там ищет по какой то причине

Крис
12.10.2018
17:06:36
Быть может задам глупый вопрос, но. Как определить эффективное количество "одновременно" работающих потоков для каждой конкретной машины?

Alexander
12.10.2018
17:10:10

Крис
12.10.2018
17:13:29
std::thread::hardware_concurrency
Я не про это. Я же могу разбить задачу на 16 потоков, где некоторые будут отдыхать а некоторые работать. Интересна какое количество потоков принесут максимальную эффективность. Я же могу создать 1000 потоков, но не уверен что это эффективней 16, к примеру.
Поэтому "одновременно" в скобочках

Alex
12.10.2018
17:14:05

Крис
12.10.2018
17:14:05
Или это слишком сильно зависит от задачи?

Alexander
12.10.2018
17:14:15
очень интересно, наверное, создать 1000 потоков и юзать из них 500 Ж)

Крис
12.10.2018
17:16:34
Мало ли, может есть какой-то алгоритм анализа задачи, который позволяет определить теоретически наиболее эффективное количество псевдо-паралельных потоков. Но судя по всему, только методом проб и ошибок, да?

Alexander
12.10.2018
17:18:15
есть наблюдение, что количество одновременно ывполняемых потоков не должно быть больше того кол-ва, что может твоя система параллельно делать. А если у тебя какие-то псевдопараллельные потоки - то зависит от задачи.
Ну мб для написания ОС какие-то другие правила

Крис
12.10.2018
17:19:21

Tim
12.10.2018
17:20:03
Что вы делаете?
Что за вопрос с потоками

Крис
12.10.2018
17:20:24

Alexey
12.10.2018
17:25:02

Aidar
12.10.2018
17:28:55

Google

Tim
12.10.2018
17:29:18
Здесь никто не знает, можно ли узнать точно размер функции в си коде? Например, я создал функцию void foo() { return; } Как мне понять сколько байт она будет занимать? Если брать указатель на функцию и итерировать до поиска команды RET то выдаются всегда разные значения почему-то.

Aidar
12.10.2018
17:29:32
Нельзя

Alexander
12.10.2018
17:29:41

Tim
12.10.2018
17:30:05
А если объектники парсить?

Aidar
12.10.2018
17:30:12
Нельзя

Крис
12.10.2018
17:30:16

Alexander
12.10.2018
17:30:36

Aidar
12.10.2018
17:31:06
На уровне ассемблера нет понятия функция

Tim
12.10.2018
17:31:07
Окей, значит никак и бесповоротно нельзя?

Alexander
12.10.2018
17:31:14

Aidar
12.10.2018
17:31:19
Никак ваще нельзя

Max
12.10.2018
17:31:25

Tim
12.10.2018
17:31:28

Aidar
12.10.2018
17:31:46

Alexander
12.10.2018
17:32:07

Tim
12.10.2018
17:32:20
Можете посоветовать где можно почитать как переменные размещаются в памяти, какие есть модификаторы доступа и т.д.

Alexey
12.10.2018
17:32:20
В рантайме нельзя, nm умеет объектник парсить

Tim
12.10.2018
17:32:32

Aidar
12.10.2018
17:32:39

Alexander
12.10.2018
17:32:55

Google

Aidar
12.10.2018
17:32:56
Потомучто переменных тоже нет

Tim
12.10.2018
17:33:01
А разве нет стековой, глобальной памяти и т.п.?

Alexey
12.10.2018
17:33:04
И переменные тоже
Есть только память

Tim
12.10.2018
17:33:20
Я имею ввиду static и тому прочее

Aidar
12.10.2018
17:33:33

Alexey
12.10.2018
17:33:43
Есть только локальные и глобальные

Aidar
12.10.2018
17:33:48
Никак не мапается на ассемблер

Tim
12.10.2018
17:34:12

Alexey
12.10.2018
17:34:18
Глобальные - это не локальные
Локальные могут вообще не быть в памяти

Tim
12.10.2018
17:34:58
В регистрах что ли?

Alexey
12.10.2018
17:34:59
Ненужные глобальные - тоже

Aidar
12.10.2018
17:35:08